AT89S52單片機(jī)中斷過程
AT89S52單片機(jī)中斷分為四個階段:中斷采樣、中斷查詢、中斷響應(yīng)、中斷返回。執(zhí)行中斷時,必須滿足以下三個條件:
(1) 中斷源有中斷申請;
(2) 此中斷源的中斷允許位為1;
(3) CPU開中斷,即總開關(guān)EA=1;
1.中斷采樣
中斷采樣針對外部中斷請求信號而言,在 S5P2對相應(yīng)引腳采樣,根據(jù)其電平狀態(tài)高/低,判斷相應(yīng)的中斷請求。
2.中斷查詢
在每個機(jī)器周期的S5P2后,由硬件自動地去查詢相應(yīng)的中斷標(biāo)志位,先查詢高級中斷,再查詢低級中斷,同級中斷按內(nèi)部中斷優(yōu)先級順序查詢。如果查詢到有中斷標(biāo)志位為1,則表明有中斷請求發(fā)生,接著從相鄰的下一個機(jī)器周期的S1狀態(tài)開始進(jìn)行中斷響應(yīng)。
3.中斷響應(yīng)
CPU響應(yīng)中斷時,先置位相應(yīng)的優(yōu)先級激活觸發(fā)器,封鎖同級和低級的中斷。然后程序根據(jù)中斷源的類別,在硬件的控制下轉(zhuǎn)向相應(yīng)的中斷入口單元,執(zhí)行中斷服務(wù)程序。
中斷響應(yīng)的過程如圖所示。
圖 中斷響應(yīng)過程
4.中斷返回
中斷服務(wù)程序的最后一條指令必須是中斷返回指令RETI。CPU執(zhí)行完這條指令后,把響應(yīng)中斷時所置位的優(yōu)先級激活觸發(fā)器清0,然后從堆棧中彈出兩個字節(jié)內(nèi)容(斷點(diǎn)地址)裝入程序計數(shù)器PC中,CPU就從原來被中斷處重新執(zhí)行被中斷的程序。
5. 中斷的響應(yīng)時間
中斷響應(yīng)時間是指從查詢中斷請求標(biāo)志位開始到轉(zhuǎn)向中斷矢量地址所需的機(jī)器周期數(shù)。響應(yīng)中斷的時間依中斷請求發(fā)生的情況不同有長有短,因此,AT89S52單片機(jī)發(fā)生中斷的時間根據(jù)中斷類型和中斷執(zhí)行的方式不同而不同。
外部中斷和的電平在每個機(jī)器周期的S5P2時被采樣并鎖存到IE0和IE1中,這個置入到IE0和IE1的狀態(tài)在下一個機(jī)器周期才被查詢電路查詢。如果產(chǎn)生了一個中斷請求,而且滿足響應(yīng)的條件,CPU響應(yīng)中斷,查詢中斷請求標(biāo)志位,同時這個周期恰好是指令的最后一個周期,則在這個機(jī)器周期結(jié)束后,中斷請求被CPU 響應(yīng),產(chǎn)生一條硬件自動生成的長調(diào)用指令LCALL,以使CPU轉(zhuǎn)到相應(yīng)的服務(wù)程序入口。這條指令需兩個機(jī)器周期,故最少需三個機(jī)器周期。
若在中斷查詢時正好開始執(zhí)行RET、RETI或訪問IE、IP,則需當(dāng)前指令完成后再繼續(xù)執(zhí)行一條指令,才進(jìn)行中斷響應(yīng)。RET、RETI用2個機(jī)器周期,MUL、DIV 4個機(jī)器周期,LCALL 2個機(jī)器周期,共需要8個機(jī)器周期
因此,在系統(tǒng)中只有一個中斷源的情況下,響應(yīng)時間總是在三個機(jī)器周期到八個機(jī)器周期之間。
編輯:admin 最后修改時間:2019-09-17