51微控制器學習之中斷學習,回顧

2021-10-22 00:11:16 字數 1761 閱讀 1170

1: 明白中斷系統的結構

2:如何觸發中斷請求(中斷過程)

3:編寫中斷函式

4:除錯執行程式

cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理(中斷發生);cpu暫時中斷當前的工作,轉去處理事件b(中斷響應和中斷服務);待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a(中斷返回),這一過程稱為中斷 。

p3.2→int0 p3.3→int0 p3.4 →t0 p3.5 → t1 p3.0 → rxd p3.1 →txd

tcon定時器中斷請求標誌。這也是要注意的點-----可以不用刻意去記,多練就可以了,下面**會告訴你怎麼用

it0(tcon.0),外部中斷0觸發方式控制位。

當it0=0時,為電平觸發方式。

當it0=1時,為邊沿觸發方式(下降沿有效)。

ie0(tcon.1),外部中斷0中斷請求標誌位。

it1(tcon.2),外部中斷1觸發方式控制位。

ie1(tcon.3),外部中斷1中斷請求標誌位。

tf0(tcon.5),定時/計數器t0溢位中斷請求標誌位。

tf1(tcon.7),定時/計數器t1溢位中斷請求標誌位。

這裡重要的是還要注意優先順序:由上到下優先順序依次降低

和中斷號:

可以用一下程式進行燒錄測試,

下面程式呼叫了兩個請求函式分別是中斷號0 和 1;

```c

#include

typedef

unsigned

int u8;

typedef

unsigned

char u16;

sbit pt1 = p2^6;

sbit pt2 = p2^3;

/******延時函式***************************/

void

delay

(u8 i)

}/**中斷請求0*************************/

void

int0init()

/****中斷函式0*********************/

void

int0

() interrupt 0

u8 i;

for(i =

0; i<

4; i++)//

}/**中斷請求1*************************/

void

int1init()

/*****中斷函式1**********************/

void

led_1

() interrupt 1

}void

main()

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...

51微控制器中斷學習

一 中斷的概念 cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理 中斷發生 cpu暫時中斷當前的工作,轉去處理事件b 中斷響應和中斷服務 待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a 中斷返回 這一過程稱為中斷 二 中斷源 在51微控制器中有5個中斷源 中斷號...