我用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语句怎么写】】】??????????????
} //
}
}
求具体程序
追答你的 FF 01 00 01 EE 字串,这五个十六进制分别代表什么意思?
追问这是我通过串口助手测试得到的发送端发出的数据
追答你这五个十六进制数,分别的要控制什么,每个字节的具体用途,也就是你通讯协议怎么定的
追问假如单片机通过串口接受的是十进制10,我现在需要把它读出来,并判别,如果相等。实现p1.0口输出低电平。麻烦帮我补全上面的程序,谢谢
追答 if(temp==0x10) // 如果收到 0x10 端口变低,16进制前面加上 0x