大家好 ! 我目前在学习串口收发数据,目的是接收命令,根据命令修改数组内的值并发送出去,主要有下面两个疑问: 1、串口调试有没有好的方法可以在线仿真,能够看到变量值的每步变化,我尝试用了proteus仿真,串口调试助手发送数据,程序进不了串口中断; 2、我写了下面一段程序,tmp[]数组接收的是串口调试助手发来的命令ASCII码。红色这句修改数组的值出了问题,接收到的ASCII码0-b转换成16进制的0-11,作为数组的下标赋值给b,接收到的ASCII码1 、2、4、8转换成16进制(tmp[2]-0x30),赋值给数组buzzer_value ''。但是实际每次buzzer_value ''都为0X00;后面发送的b 、(tmp[2]-0x30)的值又是对的,不知道中间有什么问题。 我尝试把b改成数字下标或者把tmp[2]-0x30改成具体的十六进制数,结果都是对的。 以下是相关源码: if((tmp[1]>='0')&&(tmp[1]<='9')) b=tmp[1]-0X30; else b=tmp[1]-0X51; buzzer_value '[ b ]'=(tmp[2]-0x30); a=0; while(a<12) { SBUF = buzzer_value[a]; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器) while(!TI); // 等特数据传送 (TI发送中断标志) TI = 0; // 清除数据传送标志 a++; // 下一个字符 } SBUF = b; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器) while(!TI); // 等特数据传送 (TI发送中断标志) TI = 0; // 清除数据传送标志 SBUF = tmp[2]-0X30; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器) while(!TI); // 等特数据传送 (TI发送中断标志) TI = 0; // 清除数据传送标志 int_tmp(); b=0; |
共6条
1/1 1 跳转至页
8051单片机串口调试求助

关键词: 单片机 串口调试 UART
共6条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 |