前言
今天來說說單片機中斷原理,概念搞清楚很重要!
一、關(guān)于中斷的一些概念
- 中斷的概念:當(dāng)CPU正在處理某件事的時候外界發(fā)生了緊急事件請求,要求CPU暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個緊急事件,處理完以后,再回到原來被中斷的地方,繼續(xù)原來的工作,這樣的過程稱之為中斷。
- 中斷系統(tǒng):實現(xiàn)中斷功能的部件稱為中斷系統(tǒng),中斷系統(tǒng)是為CPU具有對外界緊急事件的實時處理能力而設(shè)置的。
- 中斷請求源:請示CPU中斷的請求源即為中斷請求源,簡稱中斷源。
- 中斷優(yōu)先級:中斷系統(tǒng)一般允許多個中斷源,當(dāng)幾個中斷源同時向CPU請求中斷,那就誕生一個優(yōu)先處理哪個中斷源的問題,這樣中斷優(yōu)先級便產(chǎn)生了。
- 中斷嵌套:CPU按照中斷源的中斷優(yōu)先級處理一個低優(yōu)先級中斷的時候,假如有另外一個更高優(yōu)先級的中斷源發(fā)出中斷請求,那CPU需要暫停原來中斷源的服務(wù)程序,轉(zhuǎn)而去處理更高優(yōu)先級的中斷源,待處理結(jié)束后,再回到原低優(yōu)先級的中斷服務(wù)程序,這個過程就是中斷嵌套。
二、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轉(zhuǎn)換中斷。
- 1個低壓檢測(LVD)中斷。
- 1個CCP/PWM/PCA中斷。
- 1個SPI中斷。
- 1個比較器中斷。
- 1個PWM中斷。
- 1個PWM異常檢測中斷。
- 1個I2C中斷。
■ 比較常用的中斷是:外部引腳中斷、定時器中斷、串行口(UART)中斷。
■ 在講到每一部分知識時,我們都會詳細(xì)講解相關(guān)的中斷使用原理。
■ 下圖是STC8A8K64S4A12系列的中斷結(jié)構(gòu)圖,大家需要了解的是:
- 所有中斷使能的話都必須有個“總閘”控制,那就是總中斷允許位EA。
- 有多個中斷一起觸發(fā)時,如何仲裁以保證有序的先后執(zhí)行順序,那就存在中斷優(yōu)先級的問題。
- 關(guān)于中斷,有個不可回避的概念,那就是中斷向量。
三、關(guān)于中斷的一些概念STC8A8K64S4A12系列的中斷結(jié)構(gòu)圖

四、STC8A8K64S4A12系列的中斷優(yōu)先級
STC8A8K64S4A12系列單片機自然優(yōu)先級:手冊里面稱之為輔助優(yōu)先級結(jié)構(gòu)或者內(nèi)部的查詢次序。如下圖。

在C語言編程時,中斷查詢次序號就是中斷號,例如,針對外部中斷0的中斷服務(wù)函數(shù):
void INT0_Isr (void) interrupt 0
{
; //添加中斷處理語句
}
STC8A8K64S4A12系列單片機中斷優(yōu)先級的設(shè)置: STC8A8K64S4A12系列單片機通過設(shè)置特殊功能寄存器(IP、IPH、IP2和IP2H)中的相應(yīng)位,對有4個優(yōu)先級中斷的中斷請求源進行編程。

僅有1個中斷優(yōu)先級(最低優(yōu)先級0)的是:外部中斷2/INT2、外部中斷3/INT3、定時器2、定時器3、定時器4、串行口3、串行口4。(共7個)
STC8A8K64S4A12系列IP和IPH寄存器各位含義介紹如下:

STC8A8K64S4A12系列IP2和IP2H寄存器各位含義介紹如下:
STC8A8K64S4A12系列單片機中斷嵌套: 中斷優(yōu)先級高的中斷請求可以中斷CPU正在處理的優(yōu)先級低的中斷服務(wù)程序,待完成了中斷優(yōu)先級高的中斷服務(wù)程序后,再繼續(xù)被打斷的低優(yōu)先級的中斷服務(wù)程序。
下圖描述了主程序和中斷服務(wù)程序的示意圖,也詮釋了中斷嵌套的含義。
中斷比喻舉例,以下情形:
- 只有排長或者團長給士兵打電話;
- 排長和團長同時給士兵打電話;
- 士兵已在排長地里接到團長電話;
- 士兵已在團長地里接到排長電話;
- 士兵同時接到兩個排長的電話;
- 士兵同時接到兩個團長的電話。
STC8A8K64S4A12系列單片機中斷產(chǎn)生而且被CPU響應(yīng),主程序被中斷,接下來將執(zhí)行如下操作:
- 當(dāng)前正被執(zhí)行的指令全部執(zhí)行完畢。
- PC值被壓入棧。
- 現(xiàn)場保護。
- 阻止同級別或更低級別其他中斷。
- 將中斷向量地址裝載到程序計數(shù)器PC。
- 執(zhí)行響應(yīng)的中斷服務(wù)程序。
中斷向量:當(dāng)某中斷被響應(yīng)時,被裝載到程序計數(shù)器PC的數(shù)值稱為中斷向量,是該中斷源相對應(yīng)的中斷服務(wù)程序的起始地址。具體各中斷源服務(wù)程序的入口地址就不一一列舉了。
總結(jié)
不知道說的夠不夠清楚,望大家指正!
-
單片機
+關(guān)注
關(guān)注
6076文章
45500瀏覽量
670665 -
cpu
+關(guān)注
關(guān)注
68文章
11281瀏覽量
225109 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2316瀏覽量
98218 -
中斷
+關(guān)注
關(guān)注
5文章
917瀏覽量
43772 -
中斷系統(tǒng)
+關(guān)注
關(guān)注
1文章
96瀏覽量
61728
發(fā)布評論請先 登錄
STC8A8K64S4A12系列單片機DAC數(shù)模轉(zhuǎn)換器講解
STC8A8K64S4A12串口通信
STC8A8K64S4A12開發(fā)板學(xué)習(xí)資料
淺析STC8A8K64S4A12開發(fā)板
如何對基于STC8A8K64S4A12單片機的ADC進行檢測
基于STC8A8K64S4A12智能車設(shè)計資料分享
如何使用STC8A8K64S4A12單片機實現(xiàn)簡單的LED燈閃爍
STC8A8K64S4A12單片機怎么能掉電后保存數(shù)據(jù)?
使用STC8A8K64S4A12單片機掉電喚醒定時器應(yīng)用的實例
【STC8A8K64S4A12開發(fā)板】—聊聊單片機中斷原理
STC8A8K64S4A12的命名規(guī)則
STC8A8K64S4A12系列單片機中斷原理詳解
評論