|
相信不少和我一樣的新手也有過對51單片機的中斷優(yōu)先級有過迷惑,之前我在自己的博客上做過簡單的整理,現(xiàn)在搬運過來,希望能給和我一樣的新手一個看得懂的解釋。
51單片機有兩種優(yōu)先級——查詢優(yōu)先級&&執(zhí)行優(yōu)先級。
查詢優(yōu)先級:
查詢優(yōu)先級是指當(dāng)51單片機的多個中斷源同時引起中斷時,CPU逐個查詢中斷標(biāo)志位的次序,高優(yōu)先級的中斷標(biāo)志位將被優(yōu)先查詢到,但并不代表查詢優(yōu)先級高的中斷一定可以打斷正在執(zhí)行中斷處理的低優(yōu)先級中斷。查詢優(yōu)先級由單片機硬件決定,不可更改,可在相應(yīng)的數(shù)據(jù)手冊中得知,如下:
(不熟悉本論壇的排版,圖片可能會在文章末尾顯示,請見諒)
舉個栗子:
1、當(dāng)定時器中斷0和外部中斷1同時引起時(沒有設(shè)置中斷優(yōu)先級控制寄存器),則會首先執(zhí)行定時器中斷0的請求;
2、當(dāng)定時器中斷0和外部中斷1同時引起且外部中斷1正在執(zhí)行請求時(沒有設(shè)置中斷優(yōu)先級控制寄存器),外部中斷1不能被任何中斷(包括定時器中斷0)所打斷。
執(zhí)行優(yōu)先級:
執(zhí)行優(yōu)先級由中斷優(yōu)先級控制寄存器IP來控制。
(不熟悉本論壇的排版,圖片可能會在文章末尾顯示,請見諒)
寄存器IP設(shè)置如下:
高兩位置0
PT2:定時器中斷2優(yōu)先級控制位
PS:串口中斷優(yōu)先級控制位
PT1:定時器中斷1優(yōu)先級控制位
PX1:外部中斷1優(yōu)先級控制位
PT0:定時器中斷0優(yōu)先級控制位
PX0:外部中斷0優(yōu)先級控制位
如果只設(shè)置IP,執(zhí)行優(yōu)先級則只有兩級——高優(yōu)先級(IP中的相應(yīng)位置1)和低優(yōu)先級(IP中的相應(yīng)位置0)。若寄存器IP沒有設(shè)置(即寄存器IP所有位全為0),則只按照查詢優(yōu)先級進行。
當(dāng)多個中斷源同時引起中斷時,優(yōu)先響應(yīng)執(zhí)行優(yōu)先級高的中斷;
同一執(zhí)行優(yōu)先級的中斷則根據(jù)查詢優(yōu)先級依次響應(yīng);
一個正在執(zhí)行的低優(yōu)先級中斷能被高優(yōu)先級中斷所打斷,反之則不能;
一個正在執(zhí)行的中斷不能被新的同優(yōu)先級中斷所打斷。
舉個栗子:
當(dāng)IP中的PX1位和PT0位置1,其余位置0時,中斷的響應(yīng)次序依次為:
定時器中斷0 → 外部中斷1 → 外部中斷0 → 定時器中斷1 → 串口中斷 → 定時器中斷2
|
-
中斷優(yōu)先級控制寄存器
-
查詢優(yōu)先級,截取自STC89C52數(shù)據(jù)手冊
評分
-
查看全部評分
|