實現定時中斷 51微控制器中斷系統

2021-10-14 17:21:23 字數 3507 閱讀 4506

中斷一方面可以通過標誌位的設定,極大的降低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 中斷使能暫存器的...