金牌会员
 
- 积分
- 1053
- 金钱
- 1053
- 注册时间
- 2016-8-20
- 在线时间
- 91 小时
|
5金钱
下面的程序主要作用是从UART一串命令里找到两个相邻的数,分别是0X40和0XF1。用串口工具发送0X40和0XF1给单片机,第1次不亮、第2次亮、第3次不亮、第4次亮就这样奇数不亮偶数亮。请问这是为什么??
如果只从UART里找一组数就是正常的!超过两组就成这样了!那位大神帮忙看看这是怎么回事??
备注:波特率单片机为115200,串口工具为115200,单片机用的是22.1184MHZ晶振误差0,所以波特率没问题。且串口工具都是以16进制发送!
#include<reg52.h>
sbit LED1=P1^0;
unsigned int b,c;
void main()
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFF;
TL1 = TH1;
PCON = 0x80;
EA = 1;
ES = 1;
TR1 = 1;
while(1)
{
c=0; //变量C归0
c = SBUF; //C存储SBUF接收的数据
while(RI==!1); //等待接收完毕
RI =0; //RI归0
if(c==0x40) //检测C是否等于0X00,是的话就执行IF内的语句
{
c=0; //C归0
c = SBUF; //继续接收SBUF的数据
while(RI==!1); //等待接收完毕
RI =0; //RI归0
if(c==0xf1) //检测C是否等于0XF1,是的话就执行IF内的语句
{
LED1=0; //LED灯亮
b=60000;while(b--); //延时
LED1=1; //LED灯灭
}
}
}
}
|
|