通俗的講,中斷就是cup正在工作的時候,突然外部來了某一請求,要求cpu轉去處理請求的事件,當事情做完之後cup再回來繼續它的工作。這一過程稱為中斷 。
微控制器中斷響應可以分為以下幾個步驟:
1、停止主程式執行。當前指令執行完後立即終止現行程式的執行;
2、保護斷點。把程式計數器pc 的當前值壓入堆疊,儲存終止的位址(即斷點位址),以便從中斷服務程式返回時能繼續執行該程式;
3、尋找中斷入口;
4、執行中斷處理程式;
5、中斷返回。執行完中斷處理程式後,就從中斷處返回到主程式,繼續往下執行。
流程圖如下:
中斷技術不僅解決了快速主機與慢速i/o裝置的資料傳送問題,而且還具有如下優點:
分時操作:cpu可以分時為多個i/o裝置服務,提高了計算機的利用率;
實時響應:cpu能夠及時處理應用系統的隨機事件,系統的實時性大大增強;
可靠性高:cpu具有處理裝置故障及掉電等突發性事件能力,從而使系統可靠性提高。
上圖是80c51微控制器中斷系統的結構,從圖中可以看到80c51的中斷系統有5個中斷源(補充:8052有 6個) ,分別是:外部中斷0/1(p3.2,p3.3),內部中斷(定時計數器中斷)0/1(p3.4,p3.5),串列埠中斷(這一節先不討論)
先介紹幾個和中斷相關的暫存器:
高四位是控制內部中斷(定時計數器)的,底四位是控制外部中斷的,從中斷結構圖可以知道,外部中斷有兩種觸發方式,it0或者it1為外部中斷源觸發方式控制位,此位為1設定為電平觸發,為0設定為下降沿觸發。tf0,tf1,ie0,ie1這四個位都是中斷標誌位,不需要設定的。
顧名思義,中斷允許暫存器就是控制中斷是否開啟,注意ea總中斷,使用任何中斷這個位都要置一,當ea=0時,所有中斷都將關閉。
80c51微控制器有兩個中斷優先順序,即可實現二級中斷服務巢狀。51微控制器中自然的優先順序為:
從中斷系統結構圖中可以看到,中斷優先順序分為兩級,每一級都是按照自然優先順序排列,這樣說應該可以理解吧。ip這個暫存器預設值為xx000000b,所有的中斷都處在同一級,它就按照自然優先順序進行響應。假設我們想人為的把串列埠的優先順序設定為最高,那我們就可以在ip暫存器的ps位寫一,這樣,串列埠就被設定為更高一級,它的優先順序是最高的。
這樣,和微控制器外部中斷的幾個暫存器都講完了,定時器和串列埠的中斷會分開闡述的。這裡重點理解外部中斷。
上面講中斷過程中我們知道,那5個過程都是由計算機自動完成的,與我們無關,我們的工作只是在這5 個入口位址處存放有中斷處理的程式,那麼怎麼具體寫中斷服務程式呢?
格式:
void function(void) interrupt x using y
x=0 是外部中斷0;
x=1 是定時器中斷0;
x=2 是外部中斷1;
x=3 是定時器中斷1;
x=4 是序列口中斷;
y只能取以下值,一般我們是不用後面的using的
y=0 是第0組暫存器;
y=1 是第1組暫存器;
y=2 是第2組暫存器;
y=3 是第3組暫存器;
protues環境下硬體搭建
實現乙個外部中斷的步驟:
1.設定外部中斷源觸發方式控制位,為1設定為電平觸發。
2.開總中斷
3.開外部中斷0
#include
sbit led=p1^0;
sbit s=p3^2;
void main()
}void exterfunction(void) interrupt 0
using
1
51微控制器學習筆記 中斷
52微控制器共有6個中斷源。中斷源解釋 埠線int0 外部中斷0,低電平或下降沿引起 p3.2 int1 外部中斷1,低電平或下降沿引起 p3.3 t0定時器 計數器0,由t0計數器計滿回零引起 p3.4 t1定時器 計數器1,由t1計數器計滿回零引起 p3.5 t2定時器 計數器2,由t2計數器計...
51微控制器中斷學習
一 中斷的概念 cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理 中斷發生 cpu暫時中斷當前的工作,轉去處理事件b 中斷響應和中斷服務 待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a 中斷返回 這一過程稱為中斷 二 中斷源 在51微控制器中有5個中斷源 中斷號...
51微控制器 中斷
一 中斷的概念 cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理 中斷發生 cpu暫時中斷當前的工作,轉去處理事件b 中斷響應和中斷服務 待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a 中斷返回 這一過程稱為中斷 二 中斷源 在51微控制器中有5個中斷源 中斷號...