【51單片機(jī)系列】C51中的中斷系統(tǒng)

本文主要是關(guān)于C51中的中斷系統(tǒng)的相關(guān)介紹塑荒。

1. 中斷概念

中斷是為使單片機(jī)具有對(duì)外部或內(nèi)部隨機(jī)發(fā)生的事件實(shí)時(shí)處理而設(shè)置的。中斷功能的存在,很大程度上提高了單片機(jī)處理外部或內(nèi)部事件的能力糟把,中斷是單片機(jī)最重要的功能之一。

中斷在生活中的一個(gè)事例:你打開火牲剃,燒一壺水遣疯;然后去洗衣服,在洗衣服的過(guò)程中凿傅,突然聽到水壺發(fā)出水開的報(bào)警聲缠犀,這是,你停止洗衣服動(dòng)作聪舒,立即去關(guān)火辨液,然后將開水灌入開水壺中,灌完開水后箱残,又回去繼續(xù)洗衣服滔迈。這個(gè)過(guò)程中就發(fā)生了一次中斷止吁。

對(duì)單片機(jī)來(lái)講,中斷是指CPU在處理某一事件A時(shí)燎悍,發(fā)生了另一事件B敬惦,請(qǐng)求CPU迅速去處理(中斷發(fā)生);CPU暫時(shí)停止當(dāng)前的工作(中斷響應(yīng))谈山,轉(zhuǎn)去處理時(shí)間B(中斷服務(wù))俄删;待CPU將事件B處理完畢后,再回到原來(lái)事件A被中斷的地方繼續(xù)處理時(shí)間A(中斷返回)奏路,這一個(gè)過(guò)程稱為中斷畴椰。

如下圖是展示了生活中的中斷實(shí)例以及單片機(jī)處理中斷的過(guò)程示意圖。

中斷示意圖

將生活事例與單片機(jī)中斷結(jié)合分析鸽粉,主任務(wù)是洗衣服斜脂,水開報(bào)警是一個(gè)中斷請(qǐng)求,這一時(shí)刻相當(dāng)于斷點(diǎn)處触机,響應(yīng)中斷去關(guān)火秽褒,然后將開水灌入暖水瓶中,這一動(dòng)作實(shí)際上是處理中斷程序威兜,灌完開水后再回去繼續(xù)洗衣服销斟,相當(dāng)于處理完中斷程序后再返回主程序繼續(xù)執(zhí)行主程序。

需要注意的是椒舵,水開是隨時(shí)都有可能的蚂踊,但是無(wú)論什么時(shí)候開,只要一開將立即去處理它笔宿,處理完后再回來(lái)繼續(xù)接著洗剛才那件衣服犁钟。單片機(jī)在執(zhí)行程序時(shí),中斷也是隨時(shí)可能發(fā)生泼橘,但無(wú)論何時(shí)發(fā)生涝动,只要一旦發(fā)生,單片機(jī)將立即暫停當(dāng)前程序炬灭,趕去處理中斷程序醋粟,處理完中斷程序后再返回剛才暫停處接著執(zhí)行原來(lái)的程序。

單片機(jī)中斷時(shí)的程序流程圖

引起CPU中斷的根源稱為中斷源重归。中斷源向CPU提出中斷請(qǐng)求米愿,CPU暫時(shí)中斷原來(lái)的事務(wù)A,轉(zhuǎn)去處理事件B鼻吮,對(duì)事件B處理完畢后育苟,再回到原來(lái)被中斷的地方(即斷點(diǎn)),稱為中斷返回椎木。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)(中斷機(jī)構(gòu))违柏。

當(dāng)中央處理機(jī)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)求源稱為中斷源讼积。

微型機(jī)的中斷系統(tǒng)一般允許多個(gè)中斷源,當(dāng)幾個(gè)中斷源同時(shí)向CPU請(qǐng)求中斷脚仔,要求為它服務(wù)的時(shí)候勤众,就存在CPU優(yōu)先響應(yīng)哪一個(gè)中斷源請(qǐng)求的問題。通常根據(jù)中斷源的輕重緩急排隊(duì)鲤脏,優(yōu)先處理最緊急事件的中斷請(qǐng)求源们颜,即規(guī)定每一個(gè)中斷源有一個(gè)優(yōu)先級(jí)別。CPU總是先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求猎醇。

當(dāng)CPU正在處理一個(gè)中斷源請(qǐng)求的時(shí)候窥突,發(fā)生了另外一個(gè)優(yōu)先級(jí)比它還高的中斷源請(qǐng)求。如果CPU能夠暫停對(duì)原來(lái)中斷源的服務(wù)程序硫嘶,轉(zhuǎn)而去處理優(yōu)先級(jí)更高的中斷請(qǐng)求源阻问,處理完以后,再回到原低優(yōu)先級(jí)中斷服務(wù)程序沦疾,這樣的過(guò)程稱為中斷嵌套称近。這樣的中斷系統(tǒng)稱為多級(jí)中斷系統(tǒng),沒有中斷嵌套功能的中斷系統(tǒng)稱為單級(jí)中斷系統(tǒng)哮塞。

中斷的開啟與關(guān)閉刨秆、設(shè)置啟用哪一個(gè)中斷等都是由單片機(jī)內(nèi)部的一些特殊功能寄存器來(lái)決定的。

終端技術(shù)不僅解決了快速主機(jī)與慢速I/O設(shè)備的數(shù)據(jù)傳送問題忆畅,而且還具有如下優(yōu)點(diǎn):

  • 分時(shí)操作衡未。CPU可以分時(shí)為多個(gè)I/O設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率家凯;
  • 實(shí)時(shí)響應(yīng)眠屎。CPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng)肆饶。
  • 可靠性高改衩。CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高驯镊。

2. 中斷結(jié)構(gòu)及相關(guān)寄存器

89C51系列單片機(jī)提供了8個(gè)中斷請(qǐng)求源葫督,它們分別是:外部中斷0(INT0)竭鞍、外部中斷1(INT1)、外部中斷2(INT2)橄镜、外部中斷3(INT3)偎快、定時(shí)器0中斷、定時(shí)器1(T0)中斷、定時(shí)器2(T1)中斷濒蒋、串口(UART)中斷启盛。

需要注意,51單片機(jī)一定有基本的5個(gè)中斷丐怯,但不全有8個(gè)中斷,需要查看芯片手冊(cè)翔横,通常我們使用的都是基本的5個(gè)中斷:INT0读跷、INT1、定時(shí)器0/1禾唁、串口中斷效览。

所有的中斷都具有四個(gè)中斷優(yōu)先級(jí)(基本型只有兩個(gè))。

用戶可以用關(guān)總中斷允許位(EA/IE.7)或相應(yīng)中斷的允許位來(lái)屏蔽所有的中斷請(qǐng)求荡短,也可以用打開相應(yīng)的中斷允許位來(lái)使CPU響應(yīng)相應(yīng)的中斷請(qǐng)求丐枉。

其中有些中斷源可以用軟件獨(dú)立地控制位開中斷或關(guān)中斷狀態(tài)。

每一個(gè)中斷的優(yōu)先級(jí)別均可用軟件設(shè)置掘托。高優(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è)中斷。

STC89C5X系列單片機(jī)的各個(gè)中斷查詢次序表如下圖所示:

中斷源 中斷向量地址 相同優(yōu)先級(jí)內(nèi)的查詢次序 中斷優(yōu)先級(jí)設(shè)置IPH.IP 優(yōu)先級(jí)0(最低) 優(yōu)先級(jí)1 優(yōu)先級(jí)2 優(yōu)先級(jí)3(最高) 中斷請(qǐng)求標(biāo)志位 中斷允許控制位
/INT0
外部中斷0
0003H 0
最高
PX0H,PX0 0,0 0,1 1,0 1,1 IE0 EX0/EA
Timer0
定時(shí)器0
000BH 1 PT0H,PT0 0,0 0,1 1,0 1,1 TF0 ET0/EA
/INT1
外部中斷1
0013H 2 PX1H,PX1 0,0 0,1 1,0 1,1 IE1 EX1/EA
Timer1 001BH 3 PT1H,PT1 0,0 0,1 1,0 1,1 TF1 ET1/EA
UART 0023H 4 PSH,PS 0,0 0,1 1,0 1,1 RI+TI
Timer2 002BH 5 PT2H,PT2 0,0 0,1 1,0 1,1 TF2+EXF2 (ET2)/EA
/INT2
外部中斷2
0033H 6 PX2H,PX2 0,0 0,1 1,0 1,1 IE2 EX2/EA
/INT3
外部中斷3
003BH 7 PX3H,PX3 0,0 0,1 1,0 1,1 IE3 EX3/EA

通過(guò)設(shè)置新增加的特殊功能寄存器IPH中的相應(yīng)位锭沟,可將中斷優(yōu)先級(jí)設(shè)為四級(jí)抽兆。如果只設(shè)置IP或XICON,那么中斷優(yōu)先級(jí)就只有兩級(jí)族淮,與傳統(tǒng)8051單片機(jī)兩級(jí)中斷優(yōu)先級(jí)完全兼容辫红。

上圖中的中斷查詢次序即為中斷號(hào),當(dāng)中斷來(lái)臨時(shí)祝辣,只有中斷號(hào)正確才能進(jìn)入中斷贴妻。

以51單片機(jī)一定有的5個(gè)中斷介紹,其內(nèi)部結(jié)構(gòu)框圖如下所示:

5個(gè)基本中斷內(nèi)部結(jié)構(gòu)框圖

①. INT0對(duì)應(yīng)的是P3.2口的附加功能蝙斜,可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效名惩。當(dāng)CPU檢測(cè)到P3.2引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志IE0(TCON.1)置1孕荠,向CPU申請(qǐng)中斷娩鹉。

②. INT1對(duì)應(yīng)的是P3.3口的附加功能攻谁,可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到P3.3引腳上出現(xiàn)有效的中斷信號(hào)時(shí)弯予,中斷標(biāo)志IE1(TCON.3)置1戚宦,向CPU申請(qǐng)中斷。

③. T0對(duì)應(yīng)的是P3.4口的附加功能锈嫩,TF0(TCON.5)受楼,片內(nèi)定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T0發(fā)生溢出時(shí)呼寸,置位TF0艳汽,并向CPU申請(qǐng)中斷。

④. T1對(duì)應(yīng)的是P3.5口的附加功能等舔,TF1(TCON.7)骚灸,片內(nèi)定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志糟趾。當(dāng)定時(shí)/計(jì)數(shù)器T1發(fā)生溢出時(shí)慌植,置位TF1,并向CPU申請(qǐng)中斷义郑。

⑤. RXD和TXD對(duì)應(yīng)的是P3.0和P3.1口的附加功能蝶柿,RI(SCON.0)或TI(SCON.1),串行口中斷請(qǐng)求標(biāo)志非驮。當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí)置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時(shí)置位TI交汤,向CPU申請(qǐng)中斷。

(1). 中斷允許控制寄存器IE

CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由中斷允許寄存器IE控制的劫笙。中斷允許寄存器IE各個(gè)位如下所示:

7 6 5 4 3 2 1 0
字節(jié)地址:A8H EA ES ET1 EX1 ET0 EX0 IE

位說(shuō)明:

  • EX0(IE.0)芙扎,外部中斷0(INT0)允許位;
  • ET0(IE.1)填大,定時(shí)/計(jì)數(shù)器T0中斷允許位戒洼;
  • EX1(IE.2),外部中斷1(INT1)允許位允华;
  • ET1(IE.3)圈浇,定時(shí)/計(jì)數(shù)器T1中斷允許位;
  • ES(IE.4)靴寂,串行口中斷允許位磷蜀;
  • EA(IE.7),CPU中斷允許(總允許)位百炬;

(2). 中斷請(qǐng)求標(biāo)志寄存器TCON

中斷請(qǐng)求標(biāo)志TCON各位如下所示:

7 6 5 4 3 2 1 0
字節(jié)地址:88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON

位說(shuō)明:

  • IT0(TCON.0)褐隆,外部中斷0觸發(fā)方式控制位,IT0=0表示電平觸發(fā)方式剖踊;IT0=1時(shí)表示邊沿觸發(fā)方式庶弃,下降沿有效轨蛤;
  • IE0(TCON.1),外部中斷0中斷請(qǐng)求標(biāo)志位虫埂;
  • IT1(TCON.2)祥山,外部中斷1觸發(fā)方式控制位;
  • IE1(TCON.3)掉伏,外部中斷1中斷請(qǐng)求標(biāo)志位缝呕;
  • TF0(TCON.5),定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位斧散;
  • TF1(TCON.7)供常,定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位;

(3). 中斷優(yōu)先級(jí)

同一優(yōu)先級(jí)中的中斷申請(qǐng)不止一個(gè)時(shí)鸡捐,就會(huì)出現(xiàn)中斷優(yōu)先權(quán)排隊(duì)問題栈暇。同一優(yōu)先級(jí)的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級(jí)形成箍镜,其排列如下所示:

各中斷源響應(yīng)優(yōu)先級(jí)及中斷服務(wù)程序入口表

中斷源 中斷標(biāo)志 中斷服務(wù)程序入口 優(yōu)先級(jí)順序
外部中斷0(/INT0) IE0 0003H
定時(shí)/計(jì)數(shù)器0(T0) TF0 000BH
外部中斷1(/INT1) IE1 0013H
定時(shí)/計(jì)數(shù)器1(T1) TF1 001BH
串行口 RI或TI 0023H

(4). 中斷號(hào)

中斷源符號(hào) 名稱 中斷引起原因 中斷號(hào)
/INT0 外部中斷0 P3.2引腳低電平或下降沿 0
T0 定時(shí)/計(jì)數(shù)器0 定時(shí)/計(jì)數(shù)器0計(jì)數(shù)回0溢出 1
/INT1 外部中斷1 P3.3引腳低電平或下降沿 2
T1 定時(shí)/計(jì)數(shù)器1 定時(shí)/計(jì)數(shù)器1計(jì)數(shù)回0溢出 3
TI/RI 串行口中斷 串行通信完成一幀數(shù)據(jù)發(fā)送或接收引起中斷 4

(5). 中斷響應(yīng)條件

當(dāng)三個(gè)條件:①中斷源有中斷請(qǐng)求源祈;②此中斷源的中斷允許位為;③CPU開中斷(即EA=1)色迂;同時(shí)滿足時(shí)香缺,CPU才有可能響應(yīng)中斷。

在使用中斷時(shí)歇僧,需要做:①想使用的是哪個(gè)中斷图张,選擇響應(yīng)的中斷號(hào);②希望的觸發(fā)條件是什么诈悍;③希望在中斷之后做什么祸轮。

以外部中斷0為例,如下所示:

首先主程序需要一下代碼:

EA=1;  // 總中斷允許位置1侥钳,打開總中斷開關(guān)
EX0=1;  // 外部中斷0允許位置1适袜,打開INT0
IT0=0/1;  // 外部中斷0觸發(fā)方式控制位,置為0或1慕趴,表示電平或邊沿觸發(fā)中斷

然后中斷服務(wù)函數(shù):

void int0() interrupt 0 using 1
{
    // 編寫中斷之后做什么的代碼
}

其中int0是函數(shù)名痪蝇,可以自定義,需要符合C語(yǔ)言標(biāo)識(shí)符定義規(guī)則冕房;interrupt是一個(gè)關(guān)鍵字躏啰,表示51單片機(jī)中斷;后面的0是中斷號(hào)耙册,外部中斷0的中斷號(hào)為0给僵;后面的using 1可省略不寫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帝际,隨后出現(xiàn)的幾起案子蔓同,更是在濱河造成了極大的恐慌,老刑警劉巖蹲诀,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斑粱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡脯爪,警方通過(guò)查閱死者的電腦和手機(jī)则北,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)痕慢,“玉大人尚揣,你說(shuō)我怎么就攤上這事∫淳伲” “怎么了快骗?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)塔次。 經(jīng)常有香客問我方篮,道長(zhǎng),這世上最難降的妖魔是什么俺叭? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任恭取,我火速辦了婚禮泰偿,結(jié)果婚禮上熄守,老公的妹妹穿的比我還像新娘。我一直安慰自己耗跛,他們只是感情好裕照,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著调塌,像睡著了一般晋南。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上羔砾,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天负间,我揣著相機(jī)與錄音,去河邊找鬼姜凄。 笑死政溃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的态秧。 我是一名探鬼主播董虱,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了愤诱?” 一聲冷哼從身側(cè)響起云头,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淫半,沒想到半個(gè)月后溃槐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡科吭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年竿痰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砌溺。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡影涉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出规伐,到底是詐尸還是另有隱情蟹倾,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布猖闪,位于F島的核電站鲜棠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏培慌。R本人自食惡果不足惜豁陆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吵护。 院中可真熱鬧盒音,春花似錦、人聲如沸馅而。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瓮恭。三九已至雄坪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屯蹦,已是汗流浹背维哈。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留登澜,地道東北人阔挠。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像帖渠,于是被迫代替她去往敵國(guó)和親谒亦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容