用串口调试助手向单片机发送数据

比如我发送一个"1"以后,我在单片机内用a=SBUF接收,然后用switch(a) case 1:来做事情,为什么感觉收到的a的内容不是1呢?因为没有执行case 1后面的语句。收到的到底是什么东西,发回电脑上面显示的HEX码是"31"
前面省略
void main()
{
while(1)
{
if(flag==1)
{
switch(a)
{
case 1: 执行语句1; break;
.................
case 8:执行语句8; break;
break:执行默认语句;break;
}
........
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
结果我发现,我发送1的时候,它还是执行默认语句。

串口调试助手一般有两种数据模式,一种是字符,一种是十六进制数 0x31 是1的ASCII 码,你把串口调试助手的发送数据类型改成十六进制就可以了。

追问

那我单片机应该写case 1,还是case 0x31呢?

追答

如果你选16进制发送 就写case 1 否则就写 case 0x31

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-23
这就对了。电脑显示的是ASCII码。1的ACII码正是31H
第2个回答  2011-09-23
能不能把程序发上来看看啊?
第3个回答  2011-09-23
这个,不是很清楚。
相似回答