单片机C51问题:在中断子程序中产生中断会怎么样,如下描述:
voidUsart()interrupt4{unsignedcharreceiveData;receiveData=SBUF;//出去接收到的数据RI=0;//清除接收中...
void Usart() interrupt 4
{
unsigned char receiveData;
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位
SBUF=receiveData;//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
上面是串口中断子程序,当接收到数据时,RI=1,进入该中断子程序,然后继续执行,当执行完SBUF=receiveData; 即发送完一帧数据,TI被置1,再次进入串口中断子程序,不是又再次回到该子程序的开始了,这样无穷的循环下去岂不是死循环?但是实际调试运行是可行的,怎么回事 展开
{
unsigned char receiveData;
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位
SBUF=receiveData;//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
上面是串口中断子程序,当接收到数据时,RI=1,进入该中断子程序,然后继续执行,当执行完SBUF=receiveData; 即发送完一帧数据,TI被置1,再次进入串口中断子程序,不是又再次回到该子程序的开始了,这样无穷的循环下去岂不是死循环?但是实际调试运行是可行的,怎么回事 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询