void UartISR(void) interrupt 4 //接收数据
{
if(RI) //收到数据
{
DATA1[Num]=SBUF;
if(DATA1[0]==0x55) Num++;
else Num=0;
if(Num>2)
{
if(Num==4)
{
if(DATA1[3]==0x77)
{
Num=0;
if((DATA1[1]==1)&(DATA1[1]==DATA1[2]))
{
handshake=1;
}
else if((DATA1[1]==2)&(DATA1[1]==DATA1[2]))
{
handshake=0;
}
DATA1[0]=DATA1[1]=DATA1[2]=DATA1[3]=0;
}
}
else if(Num==5)
{
if(DATA1[4]==0x77)
{
Num=0;
temp=(DATA1[1]+DATA1[2]);
if((DATA1[1]==4)&(DATA1[3]==temp))
{
motor=DATA1[2];
}
else if((DATA1[1]==5)&(DATA1[3]==temp))
{
comnet=DATA1[2];
}
DATA1[0]=DATA1[1]=DATA1[2]=DATA1[3]=DATA1[4]=0;
}
}
else if(Num==7)
{
Num=0;
if(DATA1[6]==0x77)
{
temp=(DATA1[1]+DATA1[2]+DATA1[3]+DATA1[4]);
if((temp==DATA1[5])&(DATA1[6]==0x77))
{
DATA2[0]=DATA1[2];
DATA2[1]=DATA1[3];
DATA2[2]=DATA1[4];
DATA1[0]=DATA1[1]=DATA1[2]=DATA1[3]=DATA1[4]=DATA1[5]=DATA1[6]=0;
}
}
}
}
RI=0; //清中断请求
}
} |