我首先声明我没看完郭天祥的视频,不过我可以告诉你
puts(“turn on ad!”);这句是让串口输出“turn on ad!”的,puts这个函数和c++中的cout差不多
TI=1,这个我不知道为什么,清除之前的中断?没必要吧,因为每次退出中断都会清除这一位的。
while(!TI);TI = 0;这两句的意思很简单,等待串口输出数据完成呗,当串口把数据都传输完成之后,硬件是自动置位TI中断位,用于通知CPU串口传输完成。
然后TI=0是软件清除TI位,不然下次串口传输就无法继续下去。
以上理解仅代表我个人,在此不评论郭天祥
单片机可以实现在线调试程序,通过软件设置断点,进行单步调试,这样可以看到单片机是如何一步步执行程序的,从而快速找到问题,解决问题。以Keil和IAR为例介绍一下单片机的在线调试。
1keil
的在线调试功能
以STM32单片机为例,所需要的软件为Keil MDK,仿真工具为J-link,当程序编写完成后,编译通过,通过J-link仿真工具连接电脑和单片机板子,一定要安装好J-link的驱动,在Debug界面选择J-Link,并正确设置Setting界面的下的器件型号,如下图所示。
设置好后,点击工具栏的Debug按钮,就进入在线调试模式了,这时候会出现调试工具栏,如下图所示。
在怀疑有问题的地方设置断点后,运行单步调试,单片机就可以一步步的执行了,在watch窗口可以选择查看单片机的GPIO等寄存器,实时了解各端口和变量的变化情况。
2IAR
的在线调试功能
以STM8单片机为例,以IAR for STM8为例,工具为ST-Link,正确安装好ST-Link的驱动,程序编译通过后,执行Debug and download按钮可以开启在线仿真模式,如下图所示。
在有问题的地方设置断点,执行全速运行后,会在断点处停下,可以执行单步调试功能进入函数,再一步步执行。
这样也可以很容易的找到程序bug。
3使用串口打印进行调试
如果单片机不支持在线仿真功能,可以通过串口打印的形式输出调试信息。首先要把串口打印程序调试通,在有问题的地方通过给变量设置不同的值然后打印,这样也可以很直观的判断程序的运行情况。所需要的工具为USB/TTL。
由于篇幅有限,无法详细描述,大家可以根据以上信息搜具体的教程。
以上就是这个问题的回答,感谢留言、评论、转发。
更多精彩内容请关注本头条号:玩转嵌入式。感谢大家。
循环显示的程序很简单,如下所示:
ORG 0000H
LJMP START
ORG 0030H
START:
MOV DPTR, #LED_TAB
MOV R3, #6 ;此数字应与显示的花样个数相同
LOOP_DISP:
MOV A, R3
MOVC A, @A+DPTR
MOV P1, A
LCALL DELAY
DJNZ R3, LOOP_DISP
SJMP START
LED_TAB:
DB 0FFH, 0FEH, 0FCH, 0F8H, 0F0H, 0E0H
; 全灭,亮1个,亮2个,亮3个,亮4个
;显示花样数据,任意编写,不要超过256个
DELAY: MOV R6,#200
LP: MOV R7,#250
DJNZ R7,$
DJNZ R6,LP
RET
以上就是关于我看的是郭天祥老师的51单片机C语言教程,关于“串行口打印在调试程序中的应用”一节中全部的内容,包括:我看的是郭天祥老师的51单片机C语言教程,关于“串行口打印在调试程序中的应用”一节中、单片机程序怎么在电脑上调试用什么软件好、单片机程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)