用51单片机通过串口接受一个数据,我目标是用一个if语句来比较和判别这个数据,来实现另外一个动作的程序

我用51单片机通过串口接受一个数据。发送的串口用串口助手显示发送的数据是(也就是单片机接受的数据)FF 01 00 01 EE,波特率位9600,,我的目标是用一个if语句来比较和判别这个数据,来实现另外一个动作。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED0=P1^0;//
sbit LED1=P1^1;//
sbit LED2=P1^2;
sbit LED3=P1^3;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

//串口初始化
void Uart_init(void)
{
TMOD = 0x20; //T1 方式2
PCON = 0x00; //SMOD = 0
SCON = 0x50; //方式1 8个数据位
TH1=0xfd; ////波特率9600初值
TL1=0xfd;
TR1 = 1; //启动定时器1
ES=1; //开串口中断
EA=1; //开总中断
}
//主函数

void main(void)
{
uchar temp=0;
Uart_init();
while(1)
{
if(RI)
{
RI=0;
temp=SBUF;
}
if(temp==10)//???????????????【【这里的if语句怎么写】】】??????????????

} //
}
}

#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit LED0=P1^0;// 
sbit LED1=P1^1;//
sbit LED2=P1^2;
sbit LED3=P1^3;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

//串口初始化
void Uart_init(void)
{
   TMOD = 0x20;       //T1 æ–¹å¼2
   PCON = 0x00;       //SMOD = 0
   SCON = 0x50;       //方式1 8个数据位   
   TH1=0xfd;          ////波特率9600初值
   TL1=0xfd;
   TR1 = 1;           //启动定时器1
//   ES=1;              //开串口中断
//   EA=1;              //开总中断       
}
//主函数

void main(void)
{
 uchar temp=0;
 Uart_init();       
 while(1)
 {
  if(RI)             
   {
    RI=0;           
temp=SBUF;       
   }
    if(temp==10)LED0=0;
    else LED0=1;
 }
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-13
FF 01 00 01 EE这个数据什么含义,也就是数据帧格式是什么,有没有校验, if(temp==10)//???????????????【【这里的if语句怎么写】】】??????????????后面看你要做什么操作了。比如temp=10的时候,让p1.0=1那就直接写P!0=1;就可以,前面用是sbit P10=P1^0;
第2个回答  2014-01-13
建议你把串口接收写在串口中断里面,不要采用查询的方式接收追问

求具体程序

追答

你的 FF 01 00 01 EE 字串,这五个十六进制分别代表什么意思?

追问

这是我通过串口助手测试得到的发送端发出的数据

追答

你这五个十六进制数,分别的要控制什么,每个字节的具体用途,也就是你通讯协议怎么定的

追问

假如单片机通过串口接受的是十进制10,我现在需要把它读出来,并判别,如果相等。实现p1.0口输出低电平。麻烦帮我补全上面的程序,谢谢

追答   if(temp==0x10) // 如果收到 0x10 端口变低,16进制前面加上 0x
    LED0=0;
   if(temp==0x11) // 如果收到 0x11 端口变低,注意:这一定要有一个固定的值
    LED0=1;


Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答