51单片机 串口通信 检查接收的字符串

想在51单片机的串口通信中,根据接收到不同的字符串来执行不同的功能,如下:if(RI)//判断是接收中断产生{RI=0;//标志位清零Temp=SBUF;//读入缓冲区的... 想在51单片机的串口通信中,根据接收到不同的字符串来执行不同的功能,如下:
if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
Temp=SBUF; //读入缓冲区的值
if(Temp=="abcd") //
LED1=!LED1;
SBUF=Temp; //把接收到的值再发回电脑端
}
if(TI) //如果是发送标志位,清零
TI=0;

这只是我有疑问的片段,经测试,收发都正常,只是发送没有换行符的abcd,单片机却检查不出来,向各位高手大神请教。在此先谢过。
展开
 我来答
百度网友31a9ca1
2017-05-03 · 超过15用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:29.2万
展开全部

首先SBUF只有8位 即一字节,而"adcd"有4字节+‘\0’个,你这把temp和“abcd”比较永远只能为假。所以LED1=!LED1;这条语句不能执行。正确的做法是建立一个变量,将SBUF接受到的字符存入变量,然后再比较

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式