/*串口中断服务程序,单片机开启串口中断 */
void USART_TI0(void) interrupt 4
{
if(RI0) //判断接收标志,如果有数据接收RI被置位
{
RI0=0; //RI被硬件置位必须软件清除标志
MAIN_BUF[num++]=SBUF0; //下位机把接收到上位机数据赋值给MAIN_BUF变量
//num++;
if(num>8)
{
flag=1; //告诉已经接收完
num=0; //归0,重新等等待计数
}
}
}
上面这段程序,当我发送完整的9个字节( 00 5a 51 00 00 00 03 00 ae )程序就能正常发送接收。当我发不完整,如00或00 5a 等,程序就卡死,此时需要插拔电。有一些朋友叫我“加个时间判断 多长时间没收到 把计数器清零” 具体怎么修改望好心人帮忙。 此程序把C51的两个定时器用完了。
|