單片機中斷系統的優點:
1、實現實時處理。
2、實現分時操作。
3、進行故障處理。
4、待機狀態的喚醒。單片機嵌入式系統的應用中,為了減少電源的功耗,當系統不處理任何事物,處於待機狀態時,可以讓單片機工作在休眠的低功耗方式。通常,恢復到正常工作方式往往也是利用中斷信號來喚醒。
中斷處理過程:
中斷系統中,MCU正常情況下運行的程序稱為
主程序
,把產生申請中斷信號的單元和事件稱為
中斷源
,由中斷源向MCU所發出的申請中斷信號稱為
中斷請求
,MCU接受中斷申請並停止現行程序的運行而轉向為中斷服務稱為
中斷響應
,為中斷服務的程序稱為
中斷服務程序
,現行程序打斷的地方稱為
斷點
,執行完中斷處理程序后返回斷點處繼續執行主程序稱為
中斷返回
。
中斷過程中,斷點的保護和恢復操作是由單片機內部硬件自動實現,即保存和恢復計數器PC。
中斷現場的保護和恢復,需要自己設計中斷處理程序時編程實現。在使用中斷時,要認真和仔細考慮中斷現場的保護和恢復。
中斷的三個概念:
中斷源、
中斷信號、
中斷向量(中斷入口地址);系統有若干個中斷源,每個中斷源對應一個中斷向量,中斷向量只是中斷服務程序的一個入口地址,所有中斷向量連續存放在固定區域,構成了中斷向量區。
中斷優先級和中斷嵌套:
中斷優先級的概念是針對有多個中斷源同時申請中斷時,MCU如何響應中斷,以及響應哪個中斷而提出來的。
中斷優先級的確定:
▋
某中斷對應的中斷向量地址越小,其中斷優先級越高(硬件確定方式)
▋通過軟件對中斷控制器的設定,改變中斷的優先級(用戶可設置方式,但是AVR不支持)
一些單片機(如8051)的硬件能夠自動實現中斷嵌套的處理,即單片機內部的硬件電路能夠識別中斷的優先級,並根據優先級的高低,自動完成對高優先級中斷的優先響應,實現中斷的嵌套處理。
** AVR單片機,硬件系統不支持自動實現中斷嵌套的處理。如果在系統設計中,必須使用中斷嵌套處理,則需要由用戶編寫相應的程序,通過軟件設置來實現中斷嵌套的功能。
中斷的響應條件與中斷控制:
1)、中斷的屏蔽:通常存在一些特殊的標志位用於控制開放或關閉(屏蔽)MCU對中斷響應處理,這些標志稱為中斷屏蔽標志位或中斷允許控制位。注意,屏蔽中斷信號,不是取消。
中斷源分為:非屏蔽中斷、可屏蔽中斷、軟件中斷。**軟件中斷是指CPU具有相應的軟件中斷指令,當MCU執行這條指令時能進入軟件中斷服務,以完成特定的功能(通常用於調試),但是一般的單片機不具備軟件中斷的指令。
2)、中斷控制與終端響應條件:單片機中,對應每一個中斷源都有一個相應的中斷標志位,該中斷標志位將占據中斷控制器中的一位。當單片機檢測到某一中斷源產生符合條件的中斷信號時,其硬件會自動將該中斷源對應的中斷標志位置“1”,這就意味着有中斷信號產生了,向MCU申請中斷。
中斷標志位置“1”,並不代表MCU一定響應該中斷。為了合理控制中斷響應,在單片機內部還有相關的用於中斷控制的中斷允許標志位。 最重要的一個中斷允許標志位是全局中斷允許標志位。當該標志位為“0”,表示禁止MCU響應所有的可屏蔽中斷的響應。此時不管是否有中斷產生,MCU不會響應任何中斷請求。只有全局中斷允許標志位為“1”,MCU才響應。
全局中斷標志位為“1”,MCU響應可屏蔽中斷,每個中斷源對應一個各自獨立的中斷允許標志位。當某個中斷允許標志位為“0”時,表示MCU不響應該中斷的中斷申請。
MCU響應一個可屏蔽中斷源的中斷請求的條件是:響應A中斷 = 全局中斷允許標志位 AND 中斷A允許標志 AND 中斷A標志;這些標志位全部要置“1”。
所以,只有當全局中斷允許標志位為“1”(由用戶軟件設置),中斷A允許標志位為“1”(由用戶軟件設置),中斷A標志位為“1”(符合中斷條件時由硬件自動設置或由用戶軟件設置)時,MCU才會響應中斷A的請求信號(如果有多個中斷請求信號同時存在的情況下,還要根據中斷A的優先級來確定)。