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