我看的是郭天祥老师的51单片机C语言教程,关于“串行口打印在调试程序中的应用”一节中

我看的是郭天祥老师的51单片机C语言教程,关于“串行口打印在调试程序中的应用”一节中,第1张

我首先声明我没看完郭天祥的视频,不过我可以告诉你

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语言教程,关于“串行口打印在调试程序中的应用”一节中、单片机程序怎么在电脑上调试用什么软件好、单片机程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9445439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存