大家好 ! 我目前在学习串口收发数据,目的是接收命令,根据命令修改数组内的值并发送出去,主要有下面两个疑问: 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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
stm32f103驱动舵机被打赏20分 | |
汽车+汽车电子电阻解释与分析被打赏5分 | |
STM32F103的I2C驱动OLED动态显示被打赏30分 | |
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 |