中斷可以用下面的例子理解
工程師A在自己的位置做著自己的工作(寫代碼),工程師B有個(gè)問題需要請(qǐng)教工程師A,于是工程師B就會(huì)跑過來跟工程A請(qǐng)教。這時(shí)工程師A的寫代碼的工作會(huì)被打斷,開始回答工程B的問題,解答完問題后,工程師A又開始愉快的寫代碼。從工程師B打斷工程師A,到工程師A繼續(xù)寫代碼這者整個(gè)過程叫中斷。
1)工程師B的問題,稱為中斷源
2)工程師A停止當(dāng)前的工作,準(zhǔn)備解答稱為:中斷響應(yīng);
3)工程師A解答問題的過程稱為:中斷服務(wù)程序;
4)工程師A解答完繼續(xù)回到寫代碼的狀態(tài)稱為:中斷返回。
中斷系統(tǒng)
引起MCS-51中斷的中斷源有幾種呢?從以下的中斷系統(tǒng)中可以看到有5種中斷請(qǐng)求源,它們分別是EX0、ET0、EX1、ET1、ES 對(duì)應(yīng)著單片機(jī)的P3^0~P3^5引腳,相關(guān)的寄存器有中斷允許寄存器IE、中斷優(yōu)先級(jí)控制寄存器IP、定時(shí)器/計(jì)數(shù)器控制寄存器TCON、串行口控制寄存器SCON 。
IE寄存器:
寄存器地址為A8H,單片機(jī)復(fù)位后數(shù)值為00H;寄存器里面有8位,可以被位尋址
當(dāng)需要某中斷源需要進(jìn)入中斷服務(wù),需要開總中斷將EA位置1,并且將對(duì)應(yīng)的中斷源置1(如果是串口需要將ES置1;如果是外部中斷0需要EX0置1)
IP寄存器
寄存器地址為B8H,單片機(jī)復(fù)位后數(shù)值為00H;寄存器里面有8位,可以被位尋址
IP寄存器將對(duì)應(yīng)的中斷源置1,則該中斷源被設(shè)置為高優(yōu)先級(jí)。
在中斷系統(tǒng)中,不管高優(yōu)先中斷等級(jí)或者是低優(yōu)先級(jí)中斷等級(jí),在它們里面都是按照一定的優(yōu)先級(jí)進(jìn)行排列的進(jìn)行響應(yīng)的。這種優(yōu)先級(jí)稱之為自然優(yōu)先級(jí)。詳細(xì)可以參考上面的中斷系統(tǒng)圖
自然優(yōu)先級(jí)從高到低:外部中斷0->定時(shí)器/計(jì)數(shù)器T0中斷->外部中斷1->定時(shí)器/計(jì)數(shù)器T1中斷->串行中斷。
TCON寄存器
寄存器地址為88H,單片機(jī)復(fù)位后數(shù)值為00H;寄存器里面有8位,可以被位尋址
外部中斷可以設(shè)置兩種中斷方式(低電平或負(fù)跳變),當(dāng)檢測(cè)到有中斷(低電平或負(fù)跳變),中斷標(biāo)志位被置1,從而判斷中斷優(yōu)先級(jí),進(jìn)而中斷服務(wù)處理。
定時(shí)器/計(jì)數(shù)器在設(shè)定計(jì)數(shù)值后,開機(jī)進(jìn)行計(jì)數(shù)。當(dāng)計(jì)數(shù)溢出時(shí),會(huì)將TF0或者TF1置1。
除外部中斷標(biāo)志0外,其他的都會(huì)由硬件自動(dòng)清零。
注:
TCON還有T0與TR1兩位,這兩位是控制定時(shí)器/計(jì)數(shù)器開始計(jì)數(shù),在后面的定時(shí)器中會(huì)詳細(xì)說明。
TR1:為1是定時(shí)器T1開始計(jì)數(shù);0時(shí)不計(jì)數(shù)。
TR0:為1是定時(shí)器T0開始計(jì)數(shù);0時(shí)不計(jì)數(shù)。
SCON寄存器
寄存器地址為98H,單片機(jī)復(fù)位后數(shù)值為00H;寄存器里面有8位,可以被位尋址
在串行通訊中,串行發(fā)送與接收完一幀數(shù)據(jù)后,硬件將標(biāo)志位置1,向CPU申請(qǐng)中斷,CPU響應(yīng)中斷是,并不能直接標(biāo)志位置0,需要中斷服務(wù)程序?qū)⑺鼈冎?。
TI與RI接到ES中斷源上,因此它們是同一個(gè)中斷源。
中斷向量
為了響應(yīng)不同的中斷,將中斷服務(wù)函數(shù)的入口地址放在某個(gè)地址上,我們將這個(gè)地址成為中斷向量。
在C51中編譯器中,增加了一個(gè)擴(kuò)展字 interrupt,它是一個(gè)函數(shù)的選項(xiàng),當(dāng)函數(shù)添加上這個(gè)選項(xiàng)定義成中斷函數(shù)。中斷函數(shù)的一般形式如下:
void 函數(shù)名() [interrupu n] [using n]
interrupt后面的n為中斷號(hào)
using 后面的n為工作寄存器組(8051中有4組寄存器組->0~3組)
總結(jié):
1)C51中有5個(gè)中斷源(EX0、ET0、EX1、ET1、ES),兩個(gè)優(yōu)先等級(jí),其中TX與RX共用一個(gè)中斷源ES;
2)相關(guān)的寄存器有中斷允許寄存器IE、中斷優(yōu)先級(jí)控制寄存器IP、定時(shí)器/計(jì)數(shù)器控制寄存器TCON、串行口控制寄存器SCON 。
3)C51對(duì)函數(shù)進(jìn)行擴(kuò)展添加interrput,該關(guān)鍵字用于將函數(shù)定義成中斷服務(wù)函數(shù),對(duì)應(yīng)著中斷向量里面內(nèi)容。
-
寄存器
+關(guān)注
關(guān)注
31文章
5317瀏覽量
120006 -
51單片機(jī)
+關(guān)注
關(guān)注
273文章
5697瀏覽量
123187 -
中斷
+關(guān)注
關(guān)注
5文章
895瀏覽量
41392 -
中斷系統(tǒng)
+關(guān)注
關(guān)注
1文章
96瀏覽量
61007
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論