前言
單片機(jī)其本質(zhì)上還是一個(gè)計(jì)算機(jī),當(dāng)前一條指令執(zhí)行完畢,CPU再根據(jù)PC取出下一條指令的地址,并再得到再下條指令地址,依次執(zhí)行每一條指令。這聽(tīng)著不錯(cuò),所有的任務(wù)在有條不紊的按照順序執(zhí)行,作為一個(gè)單核處理器的單片機(jī),需要等待上一個(gè)任務(wù)結(jié)束才能進(jìn)行下一個(gè)任務(wù),但外界或內(nèi)部發(fā)生更加重要的事情,我們不能再去等著上一個(gè)任務(wù)去執(zhí)行完畢,單片機(jī)需要馬上去運(yùn)行相應(yīng)的程序以保證實(shí)時(shí)性,如當(dāng)延時(shí)時(shí)間太長(zhǎng)時(shí)(比如10s),相應(yīng)的按鍵檢測(cè)便會(huì)失靈。但在大多數(shù)的控制場(chǎng)合,需要單片機(jī)立即做出反應(yīng),保證可靠性。通過(guò)引入中斷機(jī)制,使CPU具有對(duì)外界緊急事件的實(shí)時(shí)處理能力。
中斷這個(gè)概念可以說(shuō)是所有微機(jī)的基礎(chǔ),甚至可以說(shuō)微機(jī)就是一條條執(zhí)行指令+中斷。
中斷
當(dāng)CPU正在處理某件事的時(shí)候外界發(fā)生了緊急事件請(qǐng)求,要求CPU暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個(gè)緊急事件,處理完以后,再回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作,這樣的過(guò)程稱為中斷。
實(shí)現(xiàn)這種功能的部件稱為中斷系統(tǒng),請(qǐng)示CPU中斷的請(qǐng)求源稱為中斷源。中斷系統(tǒng)一般允許多個(gè)中斷源,當(dāng)幾個(gè)中斷源同時(shí)向CPU請(qǐng)求中斷,存在CPU優(yōu)先響應(yīng)哪一個(gè)中斷源請(qǐng)求的問(wèn)題。通常規(guī)定每一個(gè)中斷源有一個(gè)優(yōu)先級(jí)別。CPU總是先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。
而中斷存在中斷嵌套的問(wèn)題,當(dāng)處理低優(yōu)先級(jí)中斷時(shí)發(fā)生高優(yōu)先級(jí)中斷,系統(tǒng)也會(huì)保存低優(yōu)先級(jí)的狀態(tài),去執(zhí)行高優(yōu)先級(jí)的程序,處理完以后,再回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作。這樣的過(guò)程稱為中斷嵌套,不能嵌套的稱為單級(jí)中斷系統(tǒng),反之為高級(jí)中斷系統(tǒng)。
STC89C51RCRD+系列單片機(jī)
IP寄存器和IE寄存器都可以支持位尋址,即可以單獨(dú)配置相應(yīng)位的值如
EA = 1;
EX0 = 1;
STC89C51RCRD+系列單片機(jī)提供了8個(gè)中斷請(qǐng)求源,它們分別是:
- 外部中斷0(INT0)、
- 定時(shí)器0中斷、
- 外部中斷1(INT1)、
- 定時(shí)器1中斷、
- 串口(UART)中斷、
- 定時(shí)器2中斷、
- 外部中斷 2(INT2)、
- 外部中斷3(INT3)
中斷優(yōu)先級(jí) IP(B8H)
STC89C51RCRD+系列所有的中斷都具有4個(gè)中斷優(yōu)先級(jí),傳統(tǒng)的8051則只有兩個(gè)中斷優(yōu)先級(jí),這里我們按照兩個(gè)配置,不配置按照默認(rèn)中斷查詢順序號(hào)查詢。配置方法為配置IP寄存器,八位寄存器,“1”表示高級(jí)中斷,“0”表示低級(jí)中斷。四級(jí)中斷可查看STC89C51RCRD+系列單片機(jī)數(shù)據(jù)手冊(cè)。
| IP(B8H) |
| 說(shuō)明 |
| 位地址 |
高優(yōu)先級(jí)的中斷請(qǐng)求可以打斷低優(yōu)先級(jí)的中斷,反之,低優(yōu)先級(jí)的中斷請(qǐng)求不可以打斷高優(yōu)先級(jí)及同優(yōu)先級(jí)的中斷。當(dāng)兩個(gè)相同優(yōu)先級(jí)的中斷同時(shí)產(chǎn)生時(shí),將由查詢次序來(lái)決定系統(tǒng)先響應(yīng)哪個(gè)中斷。下圖為中斷查詢次序表。

中斷允許 IE(A8H)
通過(guò)軟件設(shè)置IE寄存器的值可以去屏蔽一些中斷和運(yùn)行中斷,只有中斷運(yùn)行被打開(kāi)才能發(fā)生中斷。更像是中斷的開(kāi)關(guān),為1可以中斷。復(fù)位后IE中各中斷位均被清“0”,禁止所有中斷。
各個(gè)中斷除相應(yīng)的中斷允許位,還有個(gè)“總閘”EA。
| IE(A8H) |
| 說(shuō)明 |
| 位地址 |
其他中斷
其具體的中斷需要查看配置相應(yīng)的寄存器,下面以外部中斷為例進(jìn)行配置,在學(xué)習(xí)單片機(jī),嵌入式的路上,如果有元器件購(gòu)買(mǎi)需求,可以去唯樣商城,學(xué)生還有優(yōu)惠。
外部中斷
先對(duì)優(yōu)先級(jí)及中斷運(yùn)行配置
EA=1;
EX0=1;
//不配置優(yōu)先級(jí)按照默認(rèn)中斷查詢次序
其次對(duì)外部中斷的東西進(jìn)行配置,比如說(shuō)當(dāng)外部中斷0引腳收到下降沿時(shí),就觸發(fā)中斷。相應(yīng)的配置(定時(shí)器/計(jì)數(shù)器及外部中斷控制寄存器 TCON)
| TCON |
我們只用到了IE0,IT0兩位,而IE0更多的時(shí)候去讀取,而不是寫(xiě)。因此IT0才是主要位置。當(dāng)IT0=0,為低電平觸發(fā)方式;當(dāng)IT0=1,為下降沿觸發(fā)方式。
因此我們配置
IT0 = 1;
至于低電平中斷和下降沿中斷的區(qū)別,在數(shù)據(jù)手冊(cè)中寫(xiě)道
由于系統(tǒng)每個(gè)時(shí)鐘對(duì)外部中斷引腳采樣1次,所以為了確保被檢測(cè)到,輸入信號(hào)應(yīng)該至少維持2個(gè)系統(tǒng)時(shí)鐘。如果外部中斷是僅下降沿觸發(fā),要求必須在相應(yīng)的引腳維持高電平至少1個(gè)系統(tǒng)時(shí)鐘,而且低電平也要持續(xù)至少一個(gè)系統(tǒng)時(shí)鐘,才能確保該下降沿被CPU檢測(cè)到。同樣,如果外部中斷是低電平可觸發(fā),則要求必須在相應(yīng)的引腳維持低電平至少2個(gè)系統(tǒng)時(shí)鐘,這樣才能確保CPU能夠檢測(cè)到該低電平信號(hào)。
個(gè)人感覺(jué)就是低電平中斷更慢一些。
這樣我們就可以在中斷函數(shù)中寫(xiě)相應(yīng)的控制邏輯。
void exint0() interrupt0{
//控制邏輯
}
ps:中斷十分好用!??!
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6077文章
45506瀏覽量
671052 -
cpu
+關(guān)注
關(guān)注
68文章
11288瀏覽量
225237 -
中斷
+關(guān)注
關(guān)注
5文章
918瀏覽量
43784
發(fā)布評(píng)論請(qǐng)先 登錄
學(xué)單片機(jī)之中斷部分部分
51單片機(jī)定時(shí)器中斷_51單片機(jī)中斷系統(tǒng)_51單片機(jī)擴(kuò)展中斷的四種方法
51單片機(jī)教程之51單片機(jī)中斷系統(tǒng)的詳細(xì)資料概述
51單片機(jī)有幾個(gè)中斷?單片機(jī)的中斷號(hào)對(duì)應(yīng)的中斷類(lèi)型說(shuō)明
51單片機(jī)是什么_51單片機(jī)入門(mén)自學(xué)
51單片機(jī)入門(mén)教程(5)——定時(shí)器中斷
C51單片機(jī)學(xué)習(xí)筆記(四)——單片機(jī)的中斷系統(tǒng)及應(yīng)用
51單片機(jī)編程之中斷函數(shù)using關(guān)鍵字的作用
51單片機(jī)入門(mén)-2-中斷與定時(shí)
51單片機(jī)的中斷系統(tǒng)
51單片機(jī)的中斷系統(tǒng)
51單片機(jī)入門(mén)之中斷
評(píng)論