void timer0() interrupt 4
{
uchar i,ch;
if(RI)
{
RI = 0;
ch = SBUF; //接收串口数据
if(ch==0xfe) //数据帧开始
{
i = 0;
}
if(ch!=0xfe)
{
dat_bug[i] = ch; //存储串口数据
i++; //地址自加
if(i>=3) //接收到最后的字节
{
read_flag= 1 ; //就置位取数标志
}
}
}
}
中的i是临时变量,修改成static uchar i可能会好用。
不过不建议在中断中处理消息,而是建立队列进行接收。
|