首先我们来看看我截到的数据
再来看看网口数据
在来看看单片机关于串口接收的中断代码部分
void UART_Interrupt_Receive(void) interrupt 4
{
static uint8 i;
if(RI==1)
{
RI = 0;
if(rec_flag==0)
{
if(SBUF==0xff)
{
rec_flag=1;
i=0;
}
}
else
{
if(SBUF==0xff)
{
rec_flag=0;
if(i==3)
{
Communication_Decode();
}
i=0;
}
else
{
buffer=SBUF;
i++;
}
}
}
else
{
TI = 0;
}
}
//判断部分
void Communication_Decode(void)
{
if(buffer[0]==0x00)
{
switch(buffer[1])
{
case 0x01:MOTOR_GO_FORWARD; return; //
case 0x02:MOTOR_GO_BACK; return;
case 0x03:MOTOR_GO_LEFT; return;
case 0x04:MOTOR_GO_RIGHT; return;
case 0x00:MOTOR_GO_STOP; return;
default: return;
}
}
else if(buffer[0]==0x01)
{
if(buffer[2]>180)
return;
switch(buffer[1])
{
case 0x01:se_timer[0]=buffer[2]; return;
case 0x02:se_timer[1]=buffer[2]; return;
case 0x03:se_timer[2]=buffer[2]; return;
case 0x04:se_timer[3]=buffer[2]; return;
case 0x05:se_timer[4]=buffer[2]; return;
default : return;
}
}
else
{
return;
}
}
收到第一个FF后开始判断并执行宏定义过的函数
红色部分函数,没看出来什么意义,
仅仅是赋值???或许后续能用上!
|