单片机 我在窜口中输入1然后程序运行a=SBUF;if(a==1) 进不去if语句 怎么回事?

[复制链接]
查看11 | 回复5 | 2013-8-1 14:10:10 | 显示全部楼层 |阅读模式
说明a不等于1,也就是说问题应该出在前面,可能是串口初始化没做好,没有初始化成功,也可能你上位机波特率没调好,接收到的数据出错了。建议你在a=SBUF下面跟一个串口发送程序如UART_Send(a);这样就可以知道有没有收到数据,或者数据是否出错了。...
回复

使用道具 举报

千问 | 2013-8-1 14:10:10 | 显示全部楼层
恩!电脑发给你的是1,但是下位机接受到是1的acsii编码对应的就是0x31。你把if(a==1)改成if(a==0x31)试试!应该就可以了!...
回复

使用道具 举报

千问 | 2013-8-1 14:10:10 | 显示全部楼层
这个问题,应该可以通过调试增加断点的方式解决吧,这个程序肯定是不对的。a应该是ascii方式,你这个a定义成什么了?最少这里应该是a=='1'; 其次你既然能知道得不到B=0,那你是怎么看到的呢?断点加到IF,看看a是多少不就清楚了么。如果你没有断点,怎么判断的b不等于0?后面的结果?那这为什么不代表根本没进这个中断呢?这也能导致后面不能判断b=0....
回复

使用道具 举报

千问 | 2013-8-1 14:10:10 | 显示全部楼层
你使用什么格式发送数据的,如发送的ASCII码,那在数据处理时将接受到的数据-30,试试看!...
回复

使用道具 举报

千问 | 2013-8-1 14:10:10 | 显示全部楼层
串口接收有无问题?程序是在等待串口输入,还是跑其他功能了?...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行