云汉达人
你好,关于你问的问题,你可以参考我这个程序试一下:
其中:5A A5是帧头,发送数据的格式是:5A A5 长度 数据(N位)那么在数组里面的第一个数据就是代表长度,如果你要接受"I",那么只需要在数据的第一位放I就好了。
void UART_ISR(void) interrupt 4 //串口中断接受
{
if(RI)
{
DataTemp = SBUF;
RI = 0;
if(RXFRMOK==0)
{
if(RX5AOK)
{
if(RXA5OK)
{
RecData[LEN]=DataTemp;
LEN++;
if(LEN==(RecData[0]+1))
{
RXFRMOK=1;
RX5AOK=RXA5OK=0;
}
}
else
{
if(DataTemp==0xA5)
{
RXA5OK=1;
LEN=0;
}
}
}
else
{
if(DataTemp==0x5A)
{
RX5AOK=1;
}
}
}
}
else
{
TI = 0;
}
}
云汉达人
你好,关于你问的问题,你可以参考我这个程序试一下:
其中:5A A5是帧头,发送数据的格式是:5A A5 长度 数据(N位)那么在数组里面的第一个数据就是代表长度,如果你要接受"I",那么只需要在数据的第一位放I就好了。
void UART_ISR(void) interrupt 4 //串口中断接受
{
if(RI)
{
DataTemp = SBUF;
RI = 0;
if(RXFRMOK==0)
{
if(RX5AOK)
{
if(RXA5OK)
{
RecData[LEN]=DataTemp;
LEN++;
if(LEN==(RecData[0]+1))
{
RXFRMOK=1;
RX5AOK=RXA5OK=0;
}
}
else
{
if(DataTemp==0xA5)
{
RXA5OK=1;
LEN=0;
}
}
}
else
{
if(DataTemp==0x5A)
{
RX5AOK=1;
}
}
}
}
else
{
TI = 0;
}
}
举报