单片机中断嵌套语句c语言,关于赛元单片机的中断嵌套的问题求解答
單片機型號:??SC92F7423
遇到的問題: 發現在低等級的中斷服務程序中加入類似于死等的條件,高等級中斷發生時不能打斷低優先級的中斷
下面是我的一段模擬串口的程序,發現程序總是卡在while(!Time2Flag);里,(因為我的點燈沒有得到執行)
void Timer2() interrupt 5
{
TF2 = 0;? ?//溢出清零
P22 = ~P22;
LEDPIN =1;? ? //點亮LED
Time2Flag =1;
}
void EX2() interrupt? ? ? ? 2
{
//有下降沿中斷,說明收到了起始位,開始接收
DisableINT1_2();
EnableTim2();
//if(UART_RX == 1){
// EnableINT1_2();
//return;
//}
while(!Time2Flag);? ?//等待一個bit時間,接收第一個數據位
Time2Flag =0;
UartRecvOneByte_0 =(bit)UART_RX;
while(!Time2Flag);? ?//等待一個bit時間,接收第二個數據位
Time2Flag =0;
UartRecvOneByte_1 =(bit)UART_RX;
while(!Time2Flag);? ?//等待一個bit時間,接收第三個數據位
Time2Flag =0;
UartRecvOneByte_2 =(bit)UART_RX;
while(!Time2Flag);? ?//等待一個bit時間,接收第四個數據位
Time2Flag =0;
UartRecvOneByte_3 =(bit)UART_RX;
while(!Time2Flag);? ?//等待一個bit時間,接收第五個數據位
Time2Flag =0;
UartRecvOneByte_4 =(bit)UART_RX;
while(!Time2Flag);? ?//等待一個bit時間,接收第六個數據位
Time2Flag =0;
UartRecvOneByte_5 =(bit)UART_RX;
while(!Time2Flag);? ?//等待一個bit時間,接收第七個數據位
Time2Flag =0;
UartRecvOneByte_6 =(bit)UART_RX;
while(!Time2Flag);? ?//等待一個bit時間,接收第八個數據位
Time2Flag =0;
UartRecvOneByte_7 =(bit)UART_RX;
while(!Time2Flag){? ? ? ???//等待接收停止位
if(UART_RX==1){
Time2Flag =0;
break;
}
}
DisableTim2();
EnableINT1_2();
}
總結
以上是生活随笔為你收集整理的单片机中断嵌套语句c语言,关于赛元单片机的中断嵌套的问题求解答的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jconsole进行java死锁检测
- 下一篇: CTeX下的WinEdt和GSview相