8031單片機(jī)CPU響應(yīng)中斷源請(qǐng)求詳細(xì)過(guò)程及程序示例
MCS-51的CPU在每一個(gè)機(jī)器周期順序檢查每一個(gè)中斷源,在每一機(jī)器周期的狀態(tài)周期S6采樣并按優(yōu)先級(jí)順序處理所有被激活了的中斷請(qǐng)求,如果沒(méi)有被下述條件所阻止,將在下一個(gè)機(jī)器周期的狀態(tài)周期S1響應(yīng)激活了的最高級(jí)中斷請(qǐng)求。
(1)CPU正在處理相同的或更高優(yōu)先級(jí)的中斷。
(2)現(xiàn)行的機(jī)器周期不是所執(zhí)行指令最后一個(gè)機(jī)器周期。
(3)正在執(zhí)行的指令是RETI或是訪問(wèn)IE或IP的指令(CPU在執(zhí)行RETI或訪問(wèn)IE、IP的指令后,至少需要再執(zhí)行一條指令才會(huì)響應(yīng)新的中斷請(qǐng)求。
如果上述條件中有一個(gè)存在,CPU將丟棄中斷查詢的結(jié)果。
CPU響應(yīng)中斷時(shí),先置相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器(該觸發(fā)器指出CPU開(kāi)始處理的中斷優(yōu)先級(jí)別),然后執(zhí)行一個(gè)硬件子程序調(diào)用,使控制轉(zhuǎn)移到相應(yīng)的入口,中斷請(qǐng)求源申請(qǐng)標(biāo)志清0(T1和RI除外),硬件把程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧,把中斷子程序(即中斷服務(wù)程序)的入口地址(中斷向量)送入程序計(jì)數(shù)器PC。
8031單片機(jī)各個(gè)斷源的中斷服務(wù)程序入口地址是固定不變的,如下表所示。CPU從相應(yīng)的中斷服務(wù)程序入口地址開(kāi)始執(zhí)行程序。
圖片1
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0
ORG000BH
AJMPT0
ORG001BH
AJMPINT1
ORG0023H
AJMPES
CPU從相應(yīng)的中斷服務(wù)程序入口地址開(kāi)始執(zhí)行程序,直到RETI為止。RETI指令表不中斷服務(wù)程序的結(jié)束,CPU執(zhí)行該指令時(shí)、一方面把響應(yīng)中斷時(shí)所置位的優(yōu)先級(jí)狀態(tài)觸發(fā)器清0;另—方面從棧頂彈出斷點(diǎn)地址(兩個(gè)字節(jié))送到程序計(jì)數(shù)器PC,CPU從原來(lái)中斷處更新執(zhí)行被中斷的程序。