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