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