完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
调试51单片机,很多时候需要实时了解各个存储器(寄存器)的值,或者需要修改其中的值,通常的办法是增加调试代码来完成,最后再将其删除。
过程既麻烦又不方便,那么有没有什么好的办法呢?这个串口人机交互调试器就能帮到你。 其原理是通过51单片机的串口与PC通信,PC发送指令,然后单片机执行指令完成相应的功能。目前调试器的代码暂不开源,以库的形式发布给 大家使用。 使用示例 先看一下 help 的内容: 目前有四个指令,getr(读寄存器),setr(写寄存器),geti(读内存),seti(写内存)。 示例:读P0口内容 DEBUG-51> getr p0 p0:FFH 示例:写P1口内容 DEBUG-51> setr p1 0x0F 示例:读0x80内存地址内容 DEBUG-51> geti 0x80 80H:00H 示例:写0x80内存地址内容 DEBUG-51> seti 128 255 调用方法 假设你的主程序是这样的: #include #include "DEBUG51.H" ***it LED = P0^0; /* 主函数 */ void main() { UART_Init(); //串口初始化 while (1) { LED = ~ LED; Delay_1ms(); debug51(); } } 只需加入上面标注为红色的三行代码(debug51()函数必须放在主循环中),就可以调用人机交互调试器了。加入调试器的功能后,不会影响 原有程序的功能,但由于波特率中断的影响,主程序运行将会变慢。 当然还要把库文件放至你的工程项目中,下载后面的附件 DEBUG51.rar ,然后把里面的两个文件(DEBUG51.H, DEBUG51.LIB)解压至你的 项目目录中,再在工程中引用一下DEBUG51.LIB即可: 然后重新编译你的项目,下载至单片机中,就可以使用调试器了! 连接至PC 把单片机与PC间通过串口线连接好后,就可以测试通信状况了。PC端通信软件可以用超级终端,推荐使用SecureCRT,设置好通信参数: 端口(根据串口线连接设置),波特率(9600),数据位(8),奇偶校验(无),停止位(1),数据流控制(全部无) 然后打开刚设置的连接,再上电或复位单片机,如没什么意外,应该可以接收到欢迎信息: 如没有正确接收到信息,主要跟晶振频率有关,默认的晶振频率是11.0592MHz,这个频率适合于串口通信,如果不能更换晶振,也可以改为其它的 频率。修改 DEBUG51.H 中的 XTAL 值即可,如果是12MHz晶振,最好把波特率同时改为4800,这样误差小一点。 对于命令的使用方法,可随时键入 help 或 ? 即可显示,需注意一点,所有命令及参数都必须小写。 下一步准备开发的功能,可以读写内存块,例如连续读出一个数组,或许还能做到单步执行的功能。 DEBUG51.rar (4.74 KB ) |
|
相关推荐
1个回答
|
|
谢谢分享,不过库都没看到发布哦....
|
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3457 浏览 1 评论
8996 浏览 16 评论
4050 浏览 18 评论
1107浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1858浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 07:09 , Processed in 1.104747 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号