藍橋杯微控制器07 徹底理解51微控制器的中斷系統

2021-09-12 03:51:15 字數 2506 閱讀 4400

在接下來的教程中,將會介紹定時器、串列埠通訊等外設的基本使用,而這些外設的使用都要涉及中斷,而且中斷是微控制器或嵌入式開發中乙個相當重要的概念。不能掌握中斷系統,就無法靈活應用這些外設。

1、什麼是中斷?

你正在追電視劇集《神鵰俠侶》,正看得入迷的時候,**響了,你暫停電視劇集,去接**,在接**的過程中,門鈴又響了,你暫時放下**,去把門開啟。如果追電視劇集是在執行主程式,那麼**就是中斷源,**鈴響了就是中斷請求,暫停電視就是現場保護,接**就是中斷響應,門鈴響了是更高一級的中斷請求,去把門開啟,那就是中斷巢狀。開完門回來接著聊**,那是中斷返回,接完**把電視劇集暫停開啟就是現場恢復

核心與外設之間的主要互動方式有兩種:輪詢中斷。輪詢的方式貌似公平,但實際工作效率很低,且不能及時響應緊急事件;中斷系統使得核心具備了應對突發事件的能力

中斷有個特點,就是你不知道中斷什麼時候發生。因此,每個中斷都需要有乙個中斷入口位址,也成為中斷向量。這樣,不管中斷在什麼時候發生,它都有乙個確定的程式執行起始點。中斷響應之後,執行的那段程式,我們稱作中斷服務函式,也就是這個函式專門是為該中斷服務的。

2、關於51微控制器的中斷系統

一般來說,51微控制器有5個中斷源(忽略定時/計數器2),分2個優先順序,這個5個中斷源按照自然優先順序從高到低依次為:

外部中斷0int0

定時/計數器0tf0

外部中斷1int1

定時/計數器1tf1

串列埠中斷ri/ti

下面一圖將充分說明51微控制器的中斷系統結構:

也就是說,不管主程式執行到什麼地方,只要外部中斷1產生請求,核心要響應該中斷,就會到0x0013這個位址去執行**。如果你是在使用組合語言進行程式開發的時候,你需要記住每個中斷源對應的位址;如果你使用的是c語言,你只需要記住中斷源的順序就可以了,也就是最左邊的中斷號

3、中斷相關的暫存器

中斷相關的暫存器有4個,每個暫存器都是可以位定址的,這該程式設計帶來了方便。

其中2個為控制暫存器:ie暫存器與ip暫存器:

另外2個為中斷請求標誌:tcon暫存器與scon暫存器:

4、關於中斷服務函式程式的編寫

一般情況下,中斷的處理函式有兩個,其一為中斷初始化函式,其二為中斷服務函式。初始化函式就是乙個普通的函式,而中斷服務函式卻有特殊的格式要求:

<1> 中斷函式沒有返回值,也不能帶引數。

<2> 函式名後面要跟乙個關鍵字interrupt,說明這是乙個中斷服務函式。

<3> 在關鍵字interrupt後面要跟上中斷號,說明這個中斷服務函式是為那個中斷服務的。

中斷服務函式的格式為:

void函式名()interrupt中斷號

我們要利用定時器0來進行間隔定時,中斷程式架構我們c語言可以這樣寫:

5、結束語

中斷系統很重要,務必徹底理解,熟練掌握,對於每乙個款微處理器都是這樣!!!

關於微控制器藍橋杯 EEPROM

eeprom運用了iic協議,我們在藍橋杯上寫eeprom時,應該注意他給的延時是不是15個 nop 然後,在他給的iic協議的基礎上,我們自己新增兩個eeprom write與eeprom read兩個讀寫函式 void eeprom write uchar add,uchar dat iic s...

藍橋杯 微控制器 中斷程式設計

使用程式前,將跳線j5調整為btn模式 2 3引腳短接使第一列按鍵一端接地 將跳線j13調整為io模式 2 3引腳短接使u25或非門輸入訊號wr接地 按下p32 int0引腳對應的按鍵s5,l1狀態翻轉 按下p33 int1引腳對應的按鍵s4,l2狀態翻轉 include reg52.h unsig...

微控制器藍橋杯準備 溫度模組

51微控制器的溫度模組 main.c include reg52.h 標頭檔案 include ds18b20.h 溫度模組驅動 include intrins.h 移位操作標頭檔案 sfr auxr 0x8e unsigned char discode 數碼管顯示位元組碼 unsigned cha...