本帖最后由 TianYN 于 2015-3-7 22:33 编辑
问题已经解决:又犯了一个低级错误,一个很基础很根本的错误,在用电脑串口助手发送数据给单片机时选择的发送模式是
HEX模式,本来想发送的是12,于是在串口助手中就填写12,但十六进制的12怎么能和十进制的语句else if(FAS == 12)进行匹配嘛,
十六进制的12转换成十进制后是18,当然不能进入这到个 if 判断里去了,如果不改程序非要进入到这个 if 语句中,在串口助手中输入
0c就可以了,十六进制的0c转换成十进制后就是12.
出现问题的代码在这
请问怎么把电脑串口发送的数据12或20赋值给FAS进行 if 判断?
unsigned char FAS = 0;
FAS = SBUF ;
P01 = 1;
P02 = 1;
if(FAS == 7)
{
P01 = 0;
}
else if(FAS == 12)
{
P02 = 0;
}
这个程序打算用来做一个简单的单片机UART串口控制,用电脑的串口发送数据,单片机串口接收后执行相应的操作,电脑串口发送7时单片机都能正常把IO口P0.1电平置0,但发送12时单片机死活不能把P0.2置0,试过很多方法都不行,现在已经确定电脑和单片机的UART通信是正常的,IO口工作也正常。
问题就应该在这句else if(FAS == 12)判断语句中,我想过可能是串口使用的是十六进制和这里判断语句中的12可能不匹配,所以把12换成十六进制的0x0c,但是换了后还是不行,单片机根本不能执行else if里面的指令,不能把把P0.2置0。
希望知道这个问题的大神能帮我指导一下,哪怕是点一下问题的关键也行,我知道这个问题可能很基础,很根本,因为我犯过很多次这样的错误,但是这次这个我试了好久都没弄好,如果大神觉得这个问题太简单太基础,不愿意直接回答,给我指点一下就好,我自己去查找这方面的问题,我现在是找问题都不知道怎么找了。
|