[51单片机] 51单片机串口接收单字符及判断问题

[复制链接]
 楼主| ldcung 发表于 2014-4-11 20:07 | 显示全部楼层 |阅读模式
本帖最后由 ldcung 于 2014-4-11 21:20 编辑

我用串口调试助手里面选择16进制发送,发送一个数据0,在串口中断里面接收之后,用

//串口接收中断函数
void Serial_INT() interrupt 4
{
        uchar c;
        if(RI==0) return;
        ES=0;                                //关闭串口中断
        RI=0;                                //清接收中断标志
        c=SBUF;
        if(c == 0)
                LED = ~LED;        
        ES=1;
}
来进行判断,是没有问题的。
但是若选择字符格式发送一个0,在接收里面用
        if(c == ‘0’)
                LED = ~LED;
进行判断则实现不了预定的效果
我最终发现c竟然等于0x70,这又是为什么呢

ningling_21 发表于 2014-4-11 20:10 | 显示全部楼层
0并不等同于 ‘0’

‘0’代表 的是ASCII码,十六进制数是 0X30
天风立马 发表于 2014-4-11 20:30 | 显示全部楼层
亲,字符是“”
 楼主| ldcung 发表于 2014-4-11 20:35 | 显示全部楼层
天风立马 发表于 2014-4-11 20:30
亲,字符是“”

“”里面不是字符串吗?而且我用“”试了一下,还是没有效果
 楼主| ldcung 发表于 2014-4-11 20:39 | 显示全部楼层
ningling_21 发表于 2014-4-11 20:10
0并不等同于 ‘0’

‘0’代表 的是ASCII码,十六进制数是 0X30

嗯,我明白0不等于'0',我在口串口调试助手里发十六进制的0,然后在程序里面判断if(c == 0)是没有问题的,可以实现LED状态变化,但是如果在调试助手里面发送字符型 的0,并在程序里面判断if(c == '0')或者if(c == 0x30)都看不到效果。我可以确定发送时进了串口中断程序
ningling_21 发表于 2014-4-11 21:20 | 显示全部楼层
ldcung 发表于 2014-4-11 20:39
嗯,我明白0不等于'0',我在口串口调试助手里发十六进制的0,然后在程序里面判断if(c == 0)是没有问题的 ...

但是如果在调试助手里面发送字符型 的0

怎么填的呢?
 楼主| ldcung 发表于 2014-4-11 21:29 | 显示全部楼层
ningling_21 发表于 2014-4-11 21:20
但是如果在调试助手里面发送字符型 的0

怎么填的呢?


软件里面可以勾选不同的发送格式数据格式。
我不断尝试最后发现发送字符0时接收到的是0x70,也即用
if(c == 0x70)
    LED = ~LED;
可以实现LED的状态变化。然后,我就更加迷惑了:Q

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ningling_21 发表于 2014-4-11 22:00 | 显示全部楼层
ldcung 发表于 2014-4-11 21:29
软件里面可以勾选不同的发送格式数据格式。
我不断尝试最后发现发送字符0时接收到的是0x70,也即用
if(c  ...

你用十六进制发送,填0x30

if(c==0x30)//或 C=='0' 都可以
{
   ....
}
天风立马 发表于 2014-4-11 22:53 | 显示全部楼层
换个调试助手试试。
ayb_ice 发表于 2014-4-12 06:57 来自手机 | 显示全部楼层
说明接收数据是错的,0的时候正确纯属巧合
湖北泽翔 发表于 2014-4-12 11:44 | 显示全部楼层
湖北泽翔 发表于 2014-4-12 11:45 | 显示全部楼层
Leeone 发表于 2014-4-12 19:33 来自手机 | 显示全部楼层
估计又是波特率问题
jialin123 发表于 2014-4-12 23:47 | 显示全部楼层
判断条件出错
严斌 发表于 2014-4-13 20:28 | 显示全部楼层
你看下波特率的配置
Kinya 发表于 2017-1-9 21:07 | 显示全部楼层
你好,找到原因了吗?我也遇到同样的问题了?
ningling_21 发表于 2017-1-10 10:18 | 显示全部楼层
Kinya 发表于 2017-1-9 21:07
你好,找到原因了吗?我也遇到同样的问题了?

什么问题
kk5004 发表于 2017-1-10 10:59 | 显示全部楼层
問題解決了沒有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部