㈠ 51單片機中斷函數怎麼寫
51單片機的中斷函數格式:
例
void jump_low() interrupt 2
{
P1 = ~P1; //位反轉
}
interrupt函數格式:
void +函數名()+interrupt +數字0~4
0 表示外部中斷0
1 表示定時器/計數器(T0)
2外部中斷1
3:定時器/計數器(T1)
4:串列口
㈡ 51單片機,如果中斷函數比較長,執行到一半又觸發了這個中斷,程序會停止從頭執行,還是執行結束後響應中
51單片機中,中斷分高低兩個優先順序,高優先順序的中斷能打斷低優先順序的中斷。
但同級中斷是不能打斷同級中斷的!無論該中斷函數有多長,在執行到一半這個中斷又發生了,還是要等到該中斷函數執行完畢,並再執行了一條主程序指令後才會再次進入該中斷。
不過,若樓主恰好在這個低優先順序中斷服務程序中修改了該中斷為高優先順序,那麼如果該中斷函數比較長,執行到一半又觸發了這個中斷,則該中斷函數就會被重新從頭開始執行(中斷嵌套)。這是因為除串口中斷以外的其他中斷,在 CPU 響應該中斷,程序轉入該中斷函數前就已經將該中斷的中斷標志清零了。
另外,51的串口中斷比較特別,因為需要軟體清除串口中斷標志,所以只要在未清串口中斷標志前,是不會發生上述這樣的中斷嵌套的。
㈢ 51單片機中斷函數在哪裡放置
中鉛大斷函數不用在主函數中調用,只槐悄豎要中斷事件發生,單片機自己主動會調到中斷函數中運睜。
兩個中斷函數指向同一個interrupt的時候,編譯就會報錯了。