最近在做一个串口通信的项目,使用16F724. 串口接收其他主机发来了数据,数据格式是三个字节,第一个字节是字头0xaa,第二个字节是命令位,第三个字节是校验位(命令的取反码)。程序接受出现问题。
部分程序如下
u8 rcdat_code[3]={0,0,0};
u8 i=0;
u8 rcflag=0;
void interrupt Uart(void) /*串口中断*/
{
if(RCIF==1)
{
// RCIF=0; //硬件自动清零
rcdat_code[i]=RCREG;
if(rcdat_code[0]==0xAA)
{
i++;
if(i>=3)
{
i=0;
rcflag=1;
}
}
}
}
然后在主程序里读到rcflag==1进行数据校验和处理。
现在的问题是读不到rcflag=1,说明i没有到3,很奇怪。 |