中斷一方面可以通過標誌位的設定,極大的降低cpu的佔用率;另一方面使用中斷,也實現了微控制器對複雜情景的處理。
cpu與外設並行工作,當外設資料準備好或者有某種突發事件發生時,向cpu提出請求,cpu暫停正在進行的工作,轉而為該外設服務(或者是處理緊急事件),處理完畢後再回到原斷點繼續執行原程式。這個過程稱為中斷。
注:這裡對於初學者,額外解釋一句,上述所指的外設一般情況下指的是片上外設。例如定時器、序列口等
我們的計算機主要由運算器、控制器(合成**處理器cpu)、輸入、輸出、儲存這五大部分構成。除了運算器和控制器,基本都可以叫外設。
引起中斷的原因和發出中斷請求的**,稱為中斷源。
中斷源可以是外設(通過介面)、緊急事件、定時器或人為設定用於單步或斷點除錯程式。
當有多個中斷源同時向cpu申請中斷時,cpu優先響應最需緊急處理的中斷請求,這種預先安排的響應次序,稱為中斷優先順序。
能實現中斷功能並能對中斷進行管理的硬體和軟體稱為中斷系統。
中斷請求是在執行程式的過程中隨機發生的。
中斷系統要解決的問題:
①cpu在不斷的執行程式的過程中,如何檢測到隨機發生的中斷請求
②是否允許中斷
③如何正確的進入中斷
④怎麼排列優先順序
⑤中斷完成後,怎麼返回原斷點處
基礎51微控制器有5個中斷源,增強型52系列增加了乙個定時計數器2,共有6個中斷源。其中包含兩個外部中斷源,其餘為內部中斷源(具體幾個可參考自己所用微控制器型號的對應資料手冊,不同型號之間均有差異)。
基礎51微控制器只有兩個中斷優先順序,其他型號可能有更多的優先順序(取決於用來控制優先順序的位數多少,問我為什麼,先請去複習一下二進位制),通過這些優先順序的設定,我們可以使中斷實現巢狀。
中斷源符號
名稱中斷引起原因
中斷服務程式入口位址(彙編用)
int0
外部中斷0
p3^2引腳低電平或者下降沿訊號
0003h
int1
外部中斷1
p3^3引腳低電平或者下降沿訊號
0013h
t0定時器0中斷
定時器/計數器0計數回0溢位
000bh
t1定時器1中斷
定時器/計數器1計數回0溢位
001bh
t2定時器2中斷
定時器/計數器2計數回0溢位
002bh
iti / ri
序列口中斷
序列通訊完成一幀資料傳送或接受引起中斷
0023h
中斷控制主要由兩個方面:
a:是否允許中斷
b:中斷的優先順序設定
① 中斷控制暫存器 ie ——中斷的允許和接收
ea—et2
eset1
ex1et0
ex0中斷總控位
t2序列口
t1int1
t0int0
ea:中斷總控開關,1-cpu開中斷,0-關
其他都是一樣,為表內各個對應外設的中斷開關,1開0關
②中斷請求標誌及外部中斷方式選擇暫存器tcon
tf1tr1tf0
tr0ie1
it1ie0
it0t1請求有無
t1工作啟停
t0請求有無
t1工作啟停
int1 請求有無
int1工作方式 下降沿/低電平
int0請求有無
int0工作方式 下降沿/低電平
注:序列口的中斷標誌位在scon的ri和ti位
補充:
低電平和下降沿觸發的區別①觸發條件不同低電平觸發:低電平觸發後一直處於中斷狀態下降沿觸發:檢測到訊號有下降沿時就觸發開關動作,
②觸發次數不同低電平觸發:只要引腳為低電平時間內中斷一直有效,就會一直進入中斷,直到變為高電平下降沿觸發:下降沿觸發只觸發一次,只在下次電平發生變化時才重新觸發中斷
③、中斷優先順序管理暫存器ip
注:不同型號的微控制器,隨著暫存器的增多,可用來控制優先順序的位數越多,優先順序層級就越多——
pt2ps
pt1px1
pt0px0
t2優先順序高低
序列口優先順序高低
t1優先順序高低
int1優先順序高低
t0優先順序高低
int0優先順序高低
1表優先順序高 0低
若同為0或1時,cpu查詢順序為
從圖中可以看出,我們的51微控制器中斷部分流程如下:
①檢測對應中斷源標誌位
②檢測對應中斷開關是否開啟
③檢測總中斷是否開啟
④查詢是否有優先順序更高或同優先順序中斷正在執行
⑤有高優先順序或同級,等待其執行完畢進行中斷;無高優先順序和同級,直接進行中斷
cpu對中斷的響應分為4個階段:中斷請求、中斷響應、中斷服務、中斷返回
①cpu正常執行主程式
②定時器th0,tl0計滿溢位,中斷標誌位tf0置1
③cpu執行到正在進行的指令的最後乙個機器週期,例行檢測中斷標誌位
④檢測到tf0=1,暫停主程式執行,查詢ea、et0,看是否允許中斷
⑤檢測中斷優先順序,看是否有條件執行中斷
⑦將中斷入口位址送入pc,pc再送入cpu,進入中斷服務函式
⑧進入中斷服務函式,擦除中斷標誌位(軟體清零),執行中斷服務函式
⑨中斷返回,將入棧的斷點pc指令存入pc,返回主程式斷點,繼續執行
1、開中斷總開關ea,置位中斷源的中斷允許位
2、對於外部中斷int0、int1,應選擇中斷觸發方式為低電平還是下降沿
3、設定中斷優先順序,預置ip
4、中斷服務程式函式定義
注:中斷服務函式格式:
返回值 函式名([引數])[模式][ 再入]interrupt n [using m]
含義:interrupt n 將函式宣告為中斷服務函式
n:0——外部中斷0
1——定時/計數器0溢位中斷
2——外部中斷1
3——定時計數器1溢位中斷
using m 定義函式使用的工作暫存器組
m 取值範圍為0~3
#include
int0()interrupt 0
void main()
51微控制器中斷系統
1.什麼是中斷 中斷是cpu在執行程式是不需要管中斷源的狀態,當中斷源滿足中斷觸發條件時cpu再去進行終端處理 2.中斷源 80c51共五個中斷源分別是兩個外部中斷源 int0 int1,兩個定時中斷源t0 t1,乙個序列口中斷源 每個中斷源對應著乙個中斷入口位址 中斷源入口位址 外部中斷源int0...
51微控制器 中斷
一 中斷的概念 cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理 中斷發生 cpu暫時中斷當前的工作,轉去處理事件b 中斷響應和中斷服務 待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a 中斷返回 這一過程稱為中斷 二 中斷源 在51微控制器中有5個中斷源 中斷號...
51微控制器 中斷
中斷,是微控制器的一種執行機制。標準的51微控制器有兩個控制中斷的暫存器。乙個是中斷使能暫存器,另乙個是中斷優先順序暫存器。ie 中斷使能暫存器的位分配 位址0xa8,可位定址 位7 6543 210符號 ea et2es et1ex1 et0ex0 復位值000 0000 0ie 中斷使能暫存器的...