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