51微控制器之中斷的實現過程

2021-07-31 18:26:01 字數 1066 閱讀 3781

中斷是指cpu在執行某一過程中由於外界原因必須暫停現在的事情,處理別的事情,處理完了再回去執行暫停的事情。

1.分時操作。

2.實時響應

3.可靠性高

中斷中用到的暫存器:

ie暫存器:

1.單路開關:ex0 et0 ex1 et1 es

ex0:外部中斷0允許位

et0:定時/計數器t0中斷允許位

ex1:外部中斷1允許位

et1:定時/計數器t1中斷允許位

es:序列口中斷允許位

2.總開關

ea:cpu中斷允許位

ea=1開啟

ip暫存器:

作用是選擇優先順序的,解決中斷優先順序問題。

it0暫存器:選擇低電平有效還是下降沿有效,上電預設電平觸發方式,it0=1是下降沿有效

t0 t1為定時器中斷,rx tx為序列口中斷

中斷優先順序順序由高到低:

外部中斷0(ie0)->定時/計數器0(tf0)->外部中斷1(ie1)->定時/計數器1(tf1)->序列口(r1或t1)

首先響應的是優先順序高的中斷請求,正在中斷的不會被新的中斷請求打斷,正在進行低優先順序中斷服務,能被高優先順序中斷請求中斷。

中斷函式一般形式:void 函式名() interrupt   n{}

n代表中斷號,中斷號是編譯器識別不同中斷的唯一編號

中斷函式和普通函式的異同:

同:函式的形式非常類似,中斷響應過程和普通函式呼叫過程也非常相似

異:中斷函式不需要宣告,普通函式需要宣告

使用中斷函式需要遵循以下規則:

(1)中斷函式不能進行引數傳遞

(2)在任何情況下,都不能直接呼叫中斷函式

簡單中斷程式:

#include void main()

}//外部中斷程式

void interves(void) interrupt 0 using 1

51微控制器之中斷

現在假設乙個情況,微控制器在迴圈點亮led,也就是實現了乙個流水燈,現在有乙個按鍵作為輸入,我們希望通過這個按鍵來實現不同的流水燈效果,當然了,你可以把點亮led和檢測按鍵放在同乙個迴圈裡面,假設這時候你又通過串列埠傳送字串,隨著主程式任務量的增大,迴圈一次的時間也會越來越長,這就會導致按鍵檢測失效...

51微控制器之中斷使用

include void delay unsigned int xms void main void low interrupt 0 1.關於p1八位流水燈引腳,引腳有乙個上拉的5v電源,所以程式寫時p1的八位,為1時燈不亮,為0時燈亮,電路圖如下 2.關於it1 0 1中斷方式 it0表示int0...

微控制器之中斷

11月14日學習總結 時隔兩周了吧,整理了一下課上記得筆記,發現沒有當即上過課就整理筆記的後果就是老師說的很多細節都想不起來了,不過憑著我這魚的記憶還是能想起來多少就寫多少吧。首先來回顧一下基礎知識,各類資料基本型別的變數範圍,這些一定要記住,我在寫程式時有時就是因為定義的變數超出了範圍達不到想表達...