通信协议的格式0X0D 0X0A两字节开头,又以0X0D 0X0A两字节结尾,实际就是回车换行两个符号。中间是有效的数据,无效验,用串口做通信方式,中断怎么写才稳定,附上我的串口程序:
void UART1_ROUTINE() interrupt 4
{
unsigned char r1data;
if(RI)
{
RI=0;
r1data=SBUF;
RXD1[RXD1_i]=r1data;
if(r1data==0x0a&&RXD1[RXD1_i-1]==0x0d)
{
if(RXD1_STA==1)
{
RXD1_STA=2;
CHECK_RE1();
}
else
{
RXD1_STA=1;
RXD1_i=1;
RXD1[0]=0x0D;
RXD1[1]=0x0A;
}
}
RXD1_i++;
if(RXD1_i>49)
{RXD1_i=0;}
}
if(TI)
{TI=0;}
}
现在有个问题就是如果某次发送有头无尾或者有尾无头,那就全乱了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
能说说什么是状态机模式吗?我的单片机是接受别的模块发过来的数据,我没办法修改协议!
一周热门 更多>