新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)在片設(shè)備與中斷(3)

51單片機(jī)在片設(shè)備與中斷(3)

作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
中斷控制要點(diǎn)

1、當(dāng)CPU正在處理某項(xiàng)事務(wù)的時(shí)候,如果外界或內(nèi)部發(fā)生了更緊急的事件,要求CPU暫停正在處理的工作轉(zhuǎn)而去處理這個(gè)緊急事件,待處理完以后再回到原來被中斷的地方,繼續(xù)執(zhí)行原來被中斷了的程序,這樣的過程稱為中斷。

本文引用地址:http://m.butianyuan.cn/article/201611/321805.htm

(1)能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng)

(2)向CPU提出中斷請求的源稱為中斷源,51系列單片機(jī)共有5個(gè)中斷源。

(3)中斷源向CPU提出的處理請求,稱為中斷請求或中斷申請。

(4)CPU同意處理中斷請求稱為中斷響應(yīng),處理中斷請求的程序稱為中斷服務(wù)子程序。

(5)當(dāng)CPU暫時(shí)終止正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序時(shí),除了硬件自動(dòng)把斷點(diǎn)地址(16位程序計(jì)數(shù)器PC的值)壓入堆棧之外,用戶應(yīng)注意保護(hù)有關(guān)的工作寄存器、累加器、標(biāo)志位等信息,這稱為保護(hù)現(xiàn)場;在完成中斷服務(wù)子程序后,恢復(fù)有關(guān)的工作寄存器、累加器、標(biāo)志位的內(nèi)容,稱為恢復(fù)現(xiàn)場;最后執(zhí)行中斷返回指令RETI,從堆棧中自動(dòng)彈出斷點(diǎn)地址到PC,繼續(xù)執(zhí)行被中斷的程序,稱為中斷返回。

2、基本51單片機(jī)的中斷系統(tǒng)有5個(gè)中斷源,可任意分為2個(gè)中斷優(yōu)先級(jí)(高優(yōu)先級(jí)和低優(yōu)先級(jí)),可實(shí)現(xiàn)2級(jí)中斷服務(wù)程序嵌套。

(1)中斷優(yōu)先級(jí)寄存器IP的字節(jié)地址為B8H,可以位尋址。IP相應(yīng)的位為0則其對應(yīng)中斷的優(yōu)先級(jí)為低,否則優(yōu)先級(jí)為高。51單片機(jī)復(fù)位以后IP為0,各個(gè)中斷源均為低優(yōu)先級(jí)中斷。可用位操作指令或字節(jié)操作指令更改IP的內(nèi)容,以改變各中斷源的中斷優(yōu)先級(jí)。

(2)中斷允許寄存器IE的字節(jié)地址為A8H,可以位尋址。51單片機(jī)的CPU對中斷源的開放或屏蔽,是由片內(nèi)的中斷允許寄存器IE控制的,51單片機(jī)復(fù)位以后,IE被清0,由用戶程序置“1”或清“0”IE相應(yīng)的位,實(shí)現(xiàn)允許或禁止相應(yīng)中斷源的中斷申請。若允許某一個(gè)中斷源中斷,除了開放中斷總的允許位EA外,必須同時(shí)使CPU開放該中斷源的中斷允許位。

(3)51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),對于每一個(gè)中斷請求源可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。一個(gè)正在執(zhí)行的低優(yōu)先級(jí)中斷程序能被高優(yōu)先級(jí)的中斷源所中斷,但不能被另一個(gè)低優(yōu)先級(jí)的中斷源所中斷。若CPU正在執(zhí)行高優(yōu)先級(jí)的中斷,則不能被任何中斷源所中斷,一直執(zhí)行到中斷服務(wù)結(jié)束,遇到返回指令RETI。每次從中斷服務(wù)程序返回主程序后都必須再執(zhí)行一條指令后才能響應(yīng)新的中斷請求。中斷嵌套的兩條基本規(guī)則是:①低優(yōu)先級(jí)可被高優(yōu)先級(jí)中斷,而高優(yōu)先級(jí)中斷源不能被任何中斷源所中斷;②任何一種中斷(不管是高級(jí)還是低級(jí)),一旦得到響應(yīng),不會(huì)再被它的同級(jí)中斷所中斷。

(4)當(dāng)幾個(gè)同優(yōu)先級(jí)的中斷同時(shí)申請中斷時(shí),響應(yīng)哪一個(gè)中斷源將取決于由輔助優(yōu)先級(jí)決定的一個(gè)內(nèi)部查詢順序,具體就是中斷服務(wù)程序的入口地址越靠前(地址值越?。﹦t輔助優(yōu)先級(jí)越高。

3、如果總的中斷允許開放(即EA=1)則CPU在每個(gè)機(jī)器周期的S5P2時(shí)刻采樣中斷標(biāo)志,并在下一個(gè)機(jī)器周期對采樣到的中斷進(jìn)行查詢。如果前一個(gè)機(jī)器周期的S5P2有中斷標(biāo)志,則在查詢周期內(nèi)便會(huì)查詢到,并按優(yōu)先級(jí)高低進(jìn)行中斷處理,如果響應(yīng)中斷,中斷系統(tǒng)將控制程序轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序。CPU中斷響應(yīng)是有條件的,并不是查詢到的所有中斷請求都能被立即響應(yīng),當(dāng)遇到下列三種情況之一時(shí),中斷響應(yīng)被封鎖:

(1)CPU正在處理相同的或更高優(yōu)先級(jí)的中斷;

(2)現(xiàn)行的機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期;

(3)正在執(zhí)行的指令是RETI或是訪問IE或IP的指令(CPU在執(zhí)行RETI或訪問IE、IP的指令后,至少需要再執(zhí)行一條指令才會(huì)響應(yīng)新的中斷請求)。

4、TF0和TF1分別為定時(shí)/計(jì)數(shù)器0和定時(shí)/計(jì)數(shù)器1的中斷請求標(biāo)志位,在已經(jīng)開放T0/T1中斷允許且已被啟動(dòng)的前提下,T0/T1加1計(jì)滿溢出時(shí) TF0/TF1標(biāo)志位自動(dòng)置“1”;CPU 檢測到TCON中TF0/TF1變“1”后,將自動(dòng)保存當(dāng)前PC值到堆棧,并將相應(yīng)中斷服務(wù)程序入口地址000BH/001BH賦值給PC,從而在下一條指令開始執(zhí)行中斷服務(wù);TF0/TF1標(biāo)志位由硬件自動(dòng)清“0”,以便進(jìn)行下次中斷申請。

5、IE0和IE1分別為外部中斷0和外部中斷1中斷申請標(biāo)志位。以外部中斷0為例,當(dāng)IT0為0即選擇電平觸發(fā)方式時(shí),每個(gè)機(jī)器周期的S5P2采樣-INT0,若-INT0為低電平,則IE0置“ 1”,否則IE0清“0”;當(dāng)IT0為1即選擇邊沿觸發(fā)方式時(shí),當(dāng)前一個(gè)機(jī)器周期采樣到-INT0輸入為高,而本機(jī)器周期采樣到該引腳為低電平時(shí),則置“1”IE0;IE0/IE1為1表示外部中斷0/1正在向CPU申請中斷。當(dāng)CPU響應(yīng)中斷,轉(zhuǎn)向中斷服務(wù)子程序(入口地址0003H/0013H)時(shí),由硬件自動(dòng)清“0”IE0/IE1。

6、TI和RI分別是串行口的發(fā)送中斷和接收中斷的中斷請求標(biāo)志。

(1)在串行口以方式0發(fā)送時(shí),每當(dāng)發(fā)送完8位數(shù)據(jù),由硬件置“1”TI;若以方式1、方式2或方式3發(fā)送時(shí),在發(fā)送停止位的開始時(shí)置“1”TI。TI為1表示串行口發(fā)送器正在向CPU申請中斷,而CPU響應(yīng)串口發(fā)送器中斷請求,轉(zhuǎn)向執(zhí)行中斷服務(wù)程序時(shí)并不清“0”TI,TI必須由用戶的中斷服務(wù)子程序清0(即中斷服務(wù)子程序中必須用CLR TI或ANL SCON,#0FDH等清“0”TI的指令)。

(2)若串行口接收器允許接收,并以方式0工作,每當(dāng)接收到第8位數(shù)據(jù)時(shí)置“1”RI;若以方式1、2、3工作,且(SM2)=0時(shí),每當(dāng)接收器接收到停止位的中間時(shí)置“1”RI,當(dāng)串行口以方式2或方式3進(jìn)行工作,且(SM2)=1時(shí)僅當(dāng)接收到的第9位數(shù)據(jù)RB8為1后,同時(shí)還要在接收到停止位的中間位置“1”RI。RI為1表示串行口接收器正在向CPU申請中斷,而CPU響應(yīng)串口接收器中斷請求,轉(zhuǎn)向執(zhí)行中斷服務(wù)程序時(shí)并不清“0”RI,RI必須由用戶的中斷服務(wù)子程序清0(即中斷服務(wù)子程序中必須用CLR RI或ANL SCON,#0FEH等清“0”RI的指令)。

(3)實(shí)際上串口發(fā)送器中斷請求和串口接收器中斷請求對應(yīng)著同一個(gè)中斷服務(wù)程序入口地址0023H。在用戶的串口中斷服務(wù)子程序的開始應(yīng)首先判斷TI和RI標(biāo)志以決定本次中斷是由發(fā)送結(jié)束引起還是由接收完成引起以便進(jìn)一步轉(zhuǎn)入相應(yīng)的處理(也可能恰好即是發(fā)送結(jié)束又是接收完成)。



評論


技術(shù)專區(qū)

關(guān)閉