前言
今天來說說單片機中斷原理,概念搞清楚很重要!
一、關于中斷的一些概念
- 中斷的概念:當CPU正在處理某件事的時候外界發生了緊急事件請求,要求CPU暫停當前的工作,轉而去處理這個緊急事件,處理完以后,再回到原來被中斷的地方,繼續原來的工作,這樣的過程稱之為中斷。
- 中斷系統:實現中斷功能的部件稱為中斷系統,中斷系統是為CPU具有對外界緊急事件的實時處理能力而設置的。
- 中斷請求源:請示CPU中斷的請求源即為中斷請求源,簡稱中斷源。
- 中斷優先級:中斷系統一般允許多個中斷源,當幾個中斷源同時向CPU請求中斷,那就誕生一個優先處理哪個中斷源的問題,這樣中斷優先級便產生了。
- 中斷嵌套:CPU按照中斷源的中斷優先級處理一個低優先級中斷的時候,假如有另外一個更高優先級的中斷源發出中斷請求,那CPU需要暫停原來中斷源的服務程序,轉而去處理更高優先級的中斷源,待處理結束后,再回到原低優先級的中斷服務程序,這個過程就是中斷嵌套。
二、STC8A8K64S4A12系列的中斷請求源
■ STC8A8K64S4A12系列單片機有22個中斷請求源。具體如下:
- 5個外部中斷:外部中斷0/INT0、外部中斷1/INT1、外部中斷2/INT2、外部中斷3/INT3、外部中斷4/INT4 。
- 5個定時器中斷:定時器0中斷、定時器1中斷、定時器2中斷、定時器3中斷、定時器4中斷 。
- 4個串口中斷:串口1中斷、串口2中斷、串口3中斷、串口4中斷 。
- 1個A/D轉換中斷。
- 1個低壓檢測(LVD)中斷。
- 1個CCP/PWM/PCA中斷。
- 1個SPI中斷。
- 1個比較器中斷。
- 1個PWM中斷。
- 1個PWM異常檢測中斷。
- 1個I2C中斷。
■ 比較常用的中斷是:外部引腳中斷、定時器中斷、串行口(UART)中斷。
■ 在講到每一部分知識時,我們都會詳細講解相關的中斷使用原理。
■ 下圖是STC8A8K64S4A12系列的中斷結構圖,大家需要了解的是:
- 所有中斷使能的話都必須有個“總閘”控制,那就是總中斷允許位EA。
- 有多個中斷一起觸發時,如何仲裁以保證有序的先后執行順序,那就存在中斷優先級的問題。
- 關于中斷,有個不可回避的概念,那就是中斷向量。
三、關于中斷的一些概念STC8A8K64S4A12系列的中斷結構圖
四、STC8A8K64S4A12系列的中斷優先級
STC8A8K64S4A12系列單片機自然優先級:手冊里面稱之為輔助優先級結構或者內部的查詢次序。如下圖。
在C語言編程時,中斷查詢次序號就是中斷號,例如,針對外部中斷0的中斷服務函數:
void INT0_Isr (void) interrupt 0
{
; //添加中斷處理語句
}
STC8A8K64S4A12系列單片機中斷優先級的設置: STC8A8K64S4A12系列單片機通過設置特殊功能寄存器(IP、IPH、IP2和IP2H)中的相應位,對有4個優先級中斷的中斷請求源進行編程。
僅有1個中斷優先級(最低優先級0)的是:外部中斷2/INT2、外部中斷3/INT3、定時器2、定時器3、定時器4、串行口3、串行口4。(共7個)
STC8A8K64S4A12系列IP和IPH寄存器各位含義介紹如下:
STC8A8K64S4A12系列IP2和IP2H寄存器各位含義介紹如下:
STC8A8K64S4A12系列單片機中斷嵌套: 中斷優先級高的中斷請求可以中斷CPU正在處理的優先級低的中斷服務程序,待完成了中斷優先級高的中斷服務程序后,再繼續被打斷的低優先級的中斷服務程序。
下圖描述了主程序和中斷服務程序的示意圖,也詮釋了中斷嵌套的含義。
中斷比喻舉例,以下情形:
- 只有排長或者團長給士兵打電話;
- 排長和團長同時給士兵打電話;
- 士兵已在排長地里接到團長電話;
- 士兵已在團長地里接到排長電話;
- 士兵同時接到兩個排長的電話;
- 士兵同時接到兩個團長的電話。
STC8A8K64S4A12系列單片機中斷產生而且被CPU響應,主程序被中斷,接下來將執行如下操作:
- 當前正被執行的指令全部執行完畢。
- PC值被壓入棧。
- 現場保護。
- 阻止同級別或更低級別其他中斷。
- 將中斷向量地址裝載到程序計數器PC。
- 執行響應的中斷服務程序。
中斷向量:當某中斷被響應時,被裝載到程序計數器PC的數值稱為中斷向量,是該中斷源相對應的中斷服務程序的起始地址。具體各中斷源服務程序的入口地址就不一一列舉了。
總結
不知道說的夠不夠清楚,望大家指正!
-
單片機
+關注
關注
6063文章
44914瀏覽量
646789 -
cpu
+關注
關注
68文章
11031瀏覽量
215962 -
計數器
+關注
關注
32文章
2284瀏覽量
96025 -
中斷
+關注
關注
5文章
904瀏覽量
42514 -
中斷系統
+關注
關注
1文章
96瀏覽量
61292
發布評論請先 登錄
淺析STC8A8K64S4A12開發板
如何對基于STC8A8K64S4A12單片機的ADC進行檢測
基于STC8A8K64S4A12智能車設計資料分享
如何使用STC8A8K64S4A12單片機實現簡單的LED燈閃爍
使用STC8A8K64S4A12單片機掉電喚醒定時器應用的實例

【STC8A8K64S4A12開發板】—聊聊單片機中斷原理

評論