51微控制器(二十八) 外部中斷實驗

2021-10-03 13:48:09 字數 4019 閱讀 6822

int0—外部中斷0,由p32埠線引入,低電平或下降沿觸發中斷。

int1—外部中斷1,由p33埠線引入,低電平或下降沿觸發中斷。

t0—定時器/計數器0中斷,由t0計數器計滿回零引起。

t1—定時器/計數器1中斷,由t1計數器計滿回零引起。

t2—定時器/計數器2中斷,由t2計數器計滿回零引起。

ti/ri—序列口中斷,串列埠完成一幀字元傳送/接收後引起。

在定時器實驗中,我們已經對t0、t1、t2中斷進行了學習,本文我們對int0和int1這兩個外部中斷進行學習。與這兩個外部中斷有關的暫存器是中斷允許暫存器ie和定時器/計數器控制暫存器tcon。

ie用來設定各個中斷源的開啟和關閉,ie在特殊功能暫存器中位元組位址為a8h,位位址(由低位到高位)分別為a8h~afh,該暫存器可進行位定址,即可以對這個暫存器的每一位進行操作。微控制器復位時ie暫存器全部被清0,這個暫存器的各位如下表所示。

中斷允許暫存器ie

位序號d7

d6d5

d4d3

d2d1

d0位符號

ea--

et2es

et1ex1

et0ex0

位位址afh

--adh

achabh

aaha9h

a8hea—全域性中斷允許位。

ea=1,開啟全域性中斷控制,在此條件下,由各個中斷控制位確定相應中斷的開啟和關閉。

ea=0,關閉全部中斷。

--—無效位。

et2—定時器/計數器2中斷允許位。

et2=1,開啟t2中斷。

et2=0,關閉t2中斷。

es—序列口中斷允許位。

es=1,開啟序列口中斷。

es=0,關閉序列口中斷。

et1—定時器/計數器1中斷允許位。

et1=1,開啟t1中斷。

et1=0,關閉t1中斷。

ex1—外部中斷1中斷允許位。

ex1=1,開啟外部中斷1中斷。

ex1=0,關閉外部中斷1中斷。

et0—定時器/計數器0中斷允許位。

et0=1,開啟t0中斷。

et0=0,關閉t0中斷。

ex0—外部中斷0中斷允許位。

ex0=1,開啟外部中斷0中斷。

ex0=0,關閉外部中斷0中斷。

tcon在特殊功能暫存器中,位元組位址為88h,位位址(由低位到高位)分別為88h~8fh,該暫存器可以進行位定址。tcon暫存器用來控制定時器的啟、停,標誌定時器的溢位和中斷情況。微控制器復位時tcon全部清0。這個暫存器的給位定義如下表所示。其中tf1、tr1、tf0和tr0位用於定時器/計數器的設定。ie1、it1、ie0和it0位用於外部中斷的設定。

定時器/計數器控制暫存器tcon

位序號d7

d6d5

d4d3

d2d1

d0位符號

tf1tr1

tf0tr0

ie1it1

ie0it0

位位址8fh

8eh8dh

8ch8bh

8ah89h

88htf1—定時器1溢位標誌位。

當定時器1計滿溢位時,由硬體使tf1置1,並且申請中斷。進入中斷服務程式後,由硬體自動清0。需要注意的是,如果使用定時器的中斷,那麼該位完全不用人為去操作,但是如果使用軟體查詢的方式的話,當查詢到該位置1後,就必須用軟體清0。

tr1—定時器1執行控制位。

由軟體清0關閉定時器1。當gate=1時,int1為高電平且tr1置1啟動定時器1;當gate=0時,tr1置1啟動定時器1。

tf0—定時器0溢位標誌位。

該位與tf1功能和操作方法相同。

tr0—定時器0執行控制位。

該位與tr1功能和操作方法相同。

ie1—外部中斷1請求標誌。

當it1=0時,外部中斷int1為電平觸發方式,每個機器週期採用int1引腳,若int1引腳為低電平,則置1,否則ie1清0。

當it1=1時,外部中斷int1為邊沿觸發方式,當採集到int1由高電平向低電平的跳變時則將ie1置1。ie1=1表示外部中斷1正向cpu申請中斷。當cpu響應中斷轉向中斷服務程式時,該位由硬體清0。

it1—外部中斷1觸發方式選擇位。

it1=0,電平觸發方式,引腳int1上低電平觸發中斷。

it0=1,邊沿觸發方式,引腳int1上由高電平向低電平的跳變觸發中斷。

ie0—外部中斷0請求標誌。

這一位的用法與ie1相同。

it0—外部中斷0觸發方式選擇位。

這一位的用法與it1相同。

在這個實驗中,我們把按鍵f1與外部中斷的0通道連線在一起。用f1作為外部觸發的訊號源。這裡例程的**如下所示。

main()

void int0_isr(void) interrupt 0 using 1

在主函式中,首先給led賦初值,然後開啟外部中斷,設定外部中斷為電平觸發方式,之後for迴圈使程式處於等待狀態。在外部中斷的處理函式中,將led的每一位取反。

將程式燒寫之後可以看到實驗現象,發光管中有4個點亮,按下f1按鍵則發光管全部點亮,鬆開f1按鍵,則4個發光管點亮。

int0和int1分別與p32和p33口復用,將按鍵接到p32口上後,按下按鍵之後,int0口輸入低電平。則觸發中斷。在中斷中,對led按位取反。由於採用電平觸發中斷,因此只要按鍵按下,就會一直進入中斷,對led一直取反。因此,看到的現象是8個發光管都發光。

這個實驗與上乙個實驗不同,這個實驗我們採用邊沿觸發的方式採集外部中斷,並對led進行控制,實驗**如下所示。

main()

void int0_isr(void) interrupt 0 using 1

這個實驗用外部中斷0的下降沿來觸發中斷。在中斷中進行去抖後,將led1的狀態改變。將按鍵接到p32口上後,按下按鍵之後,則led1狀態改變。

51微控制器 外部中斷

int0是外部中斷0 0 int1是外部中斷1 2 t0和t1是定時器中斷 1,3 rx和tx是串列埠中斷 it0和it1確定工作方式 暫存器tcon中配置 ie0和ie1是中斷標誌位,為1的時候,向cpu傳送請求中斷 tf0和tf1是溢位中斷請求位 定時器溢位便置1,傳送請求中斷 ri和ti是序列...

C51微控制器 外部中斷

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

51微控制器 中斷

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