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

比如我发送一个"1"以后,我在单片机内用a=SBUF接收,然后用switch(a)case1:来做事情,为什么感觉收到的a的内容不是1呢?因为没有执行case1后面的语句... 比如我发送一个"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的时候,它还是执行默认语句。
展开
 我来答
landlde
推荐于2017-09-26 · TA获得超过170个赞
知道小有建树答主
回答量:343
采纳率:100%
帮助的人:107万
展开全部

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

追问
那我单片机应该写case 1,还是case 0x31呢?
追答
如果你选16进制发送 就写case 1 否则就写 case 0x31
邵献sV
2011-09-23 · TA获得超过1583个赞
知道小有建树答主
回答量:468
采纳率:100%
帮助的人:188万
展开全部
这就对了。电脑显示的是ASCII码。1的ACII码正是31H
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jeason_young
2011-09-23 · 超过15用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:36.7万
展开全部
能不能把程序发上来看看啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1073072541
2011-09-23 · TA获得超过106个赞
知道答主
回答量:59
采纳率:0%
帮助的人:71.8万
展开全部
这个,不是很清楚。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式