单片机串口接收超时中断是怎么回事啊?这个超时的时间是单片机自己算出的吗?

2024-12-03 16:40:08
推荐回答(2个)
回答1:

用定时器做一个限制时间,当串口超过这个时间没有数据时就判断超时错误,例如:
#include
#define uchar unsigned char
uchar res;
bit timeout;
uchar uart()
{
uchar dat;
dat=0xff;
TR0=1;
RI=0;
timeout=0;
while(!RI)
{
if(timeout)return(dat);
};
RI=0;
dat=SBUF;
return(dat);
}
void t0_isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
timeout=1;
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;
EA=1;
while(1)
{
res=uart();
if(res==0xff)//超时处理。
}
}

回答2:

单片机串口接收超时中断是怎么回事啊?
接收数据时,超过一定时间就算出错.

这个超时的时间是单片机自己算出的吗?
超时的时间是由编程序的人定的,他定多长就多长