51单片机串口接收中断连续接收字符串,中断一直占有CPU时间直到字符串接收完毕?

2024-11-07 12:44:14
有3个网友回答
网友(1):

1楼的说法明显不对,串口接收时有标志位RI,当串口接收到一个字符(8位)时,RI会自动被置1,此时CPU会从主程序转去执行串行中断,普通单串口51单片机一般为 interrupt 4 子程序,当执行完时会自动回到主程序继续执行,因此自 interrupt 4子程序结尾要把RI清零,以接受下一个中断,否则无法再接收下一个数据
interrupt 4主程序中一般处理方式是将接收寄存器SBUF中的数据转存到事先定义的缓存中,如果是接受字符串时请注意缓存需移位,例程如下:
void Serial_interrupt() interrupt 4
{
uchar temp;
rec_data[i++]=SBUF; // rec_data为事先定义的接收缓存,可以持续接收,直到你需要串口数据时来取为止
RI=0;//接收中断信号清零,表示将继续接收
}

网友(2):

理解的没错,说法有点不对,是中断子程序一直运行,直到字符串接收完毕,这时会有一个状态标志位的变化。

网友(3):

不是的 ,中断后去执行中断子程序了