打印
[51单片机]

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

[复制链接]
4664|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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
亲,字符是“”

“”里面不是字符串吗?而且我用“”试了一下,还是没有效果

使用特权

评论回复
5
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)都看不到效果。我可以确定发送时进了串口中断程序

使用特权

评论回复
6
ningling_21| | 2014-4-11 21:20 | 只看该作者
ldcung 发表于 2014-4-11 20:39
嗯,我明白0不等于'0',我在口串口调试助手里发十六进制的0,然后在程序里面判断if(c == 0)是没有问题的 ...

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

怎么填的呢?

使用特权

评论回复
7
ldcung|  楼主 | 2014-4-11 21:29 | 只看该作者
ningling_21 发表于 2014-4-11 21:20
但是如果在调试助手里面发送字符型 的0

怎么填的呢?


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

使用特权

评论回复
8
ningling_21| | 2014-4-11 22:00 | 只看该作者
ldcung 发表于 2014-4-11 21:29
软件里面可以勾选不同的发送格式数据格式。
我不断尝试最后发现发送字符0时接收到的是0x70,也即用
if(c  ...

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

if(c==0x30)//或 C=='0' 都可以
{
   ....
}

使用特权

评论回复
9
天风立马| | 2014-4-11 22:53 | 只看该作者
换个调试助手试试。

使用特权

评论回复
10
ayb_ice| | 2014-4-12 06:57 | 只看该作者
说明接收数据是错的,0的时候正确纯属巧合

使用特权

评论回复
11
湖北泽翔| | 2014-4-12 11:44 | 只看该作者

使用特权

评论回复
12
湖北泽翔| | 2014-4-12 11:45 | 只看该作者

使用特权

评论回复
13
Leeone| | 2014-4-12 19:33 | 只看该作者
估计又是波特率问题

使用特权

评论回复
14
jialin123| | 2014-4-12 23:47 | 只看该作者
判断条件出错

使用特权

评论回复
15
严斌| | 2014-4-13 20:28 | 只看该作者
你看下波特率的配置

使用特权

评论回复
16
Kinya| | 2017-1-9 21:07 | 只看该作者
你好,找到原因了吗?我也遇到同样的问题了?

使用特权

评论回复
17
ningling_21| | 2017-1-10 10:18 | 只看该作者
Kinya 发表于 2017-1-9 21:07
你好,找到原因了吗?我也遇到同样的问题了?

什么问题

使用特权

评论回复
18
kk5004| | 2017-1-10 10:59 | 只看该作者
問題解決了沒有

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝