51手記之標準51(三)
MCS51提供5個中斷源,每個中斷源有2個中斷優先級,可實現兩級中斷服務程序嵌套;優先級相同的中斷服務程序不會發生嵌套。

1.中斷源
包括兩個外部中斷、兩個定時器溢出中斷和一個串行口中斷。
1)外部中斷源: MCS51有兩條外部中斷請求輸入線,允許外部中斷源以低電平或負邊沿兩種中斷觸發方式來輸入中斷請求信號
中斷請求標志位IE0、IE1,
控制寄存器:TCON
2)定時器溢出中斷源:
屬于內部中斷,8031內部有兩個16位的定時器/計數器,受內部定時脈沖(主脈沖經12分頻后)或T0/T1引腳上輸入的外部定時脈沖控制。定時器T0/T1在定時脈沖作用下從全“1”變為全“0”時可以自動向CPU提出溢出中斷請求,以表明定時器T0或T1的定時時間已到。定時器T0/T1的定時時間可由用戶通過程序設定,以便CPU在定時器溢出中斷服務程序內進行計時。
3)串行口中斷源:
屬于內部中斷,串行口中斷分為串行口發送中斷和串行口接收中斷兩種。在串行口進行發送/接收數據時,每當串行口發送/接收完一組串行數據時,串行口電路自動使串行口控制寄存器SCON中的RI葳TI中斷標志位置位,并自動向CPU發出串行口中斷,CPU響應串行口中斷后便立即轉入串行口中斷服務程序執行。
2.中斷控制
CPU對中斷源的開放和屏蔽,以及每個中斷源是否被允許中斷,都受中斷允許寄存器IE控制。每個中斷源優先級的設定,則由中斷優先級寄存器IP控制。
8031內部中斷系統對各中斷源中斷優先級有一個統一的規定,各中斷源按規定從高到低的排列順序為:
外部中斷0→ 定時器中斷T0→ 外部中斷1 →定時器中斷T1→ 串行口中斷3.中斷響應
CPU在每個機器周期的S5P2期間采樣中斷標志,在下一個機器周期的S6期間按先后順序查詢中斷標志。在查詢到某一中斷標志為1時,則在下一個機器周期S1期間按優先級別進行中斷處理。中斷系統通過硬件生成長調用指令LCALL,將程序轉移到中斷入口地址單元,執行相應的中斷服務程序。
響應中斷時,CPU先置位優先級狀態觸發器,接著再執行由硬件產生的長調用指令LCALL。該指令將程序計數器PC的內容壓入堆棧保護起來。但對諸如PSW、累加器A等寄存器并不保護(需要時可由軟件保護)。然后將對應的中斷入口地址裝入程序計數器PC,使程序轉移到該中斷入口地址單元,去執行中斷服務程序。
CPU響應中斷請求后,在中斷返回(RETI指令)前,必須撤除請求,否則會錯誤地再一次引起中斷響應。
評論