《單片機(jī)原理與應(yīng)用技術(shù)》課件第6章_第1頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件第6章_第2頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件第6章_第3頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件第6章_第4頁(yè)
《單片機(jī)原理與應(yīng)用技術(shù)》課件第6章_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

6.1中斷的概念6.2中斷系統(tǒng)的結(jié)構(gòu)6.3中斷控制系統(tǒng)6.4中斷處理過(guò)程6.5外部中斷觸發(fā)方式的選擇6.6中斷程序設(shè)計(jì)第6章中斷系統(tǒng)中斷是指計(jì)算機(jī)在執(zhí)行程序的過(guò)程中,當(dāng)出現(xiàn)異常情況或特殊請(qǐng)求時(shí),計(jì)算機(jī)停止現(xiàn)行程序的運(yùn)行,自動(dòng)轉(zhuǎn)向?qū)@些異常情況或特殊請(qǐng)求的處理,處理結(jié)束后再返回現(xiàn)行程序的間斷處,繼續(xù)執(zhí)行原程序。

中斷是單片機(jī)實(shí)時(shí)地處理內(nèi)部或外部事件的一種內(nèi)部機(jī)制。當(dāng)某種內(nèi)部或外部事件發(fā)生時(shí),單片機(jī)的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理,中斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去。

中斷的過(guò)程如圖6.1所示,它包括以下幾個(gè)部分。6.1中?斷?的?概?念圖6.1中斷過(guò)程中斷源:產(chǎn)生中斷的請(qǐng)求源,如一個(gè)電平的變化、一個(gè)脈沖的發(fā)生或計(jì)數(shù)器的溢出等。

中斷響應(yīng):如何停止當(dāng)前程序去響應(yīng)中斷,包括中斷優(yōu)先、保護(hù)斷點(diǎn)等。

中斷服務(wù):對(duì)中斷事件的處理。

中斷返回:事件處理完后,返回原來(lái)被中止的程序。

計(jì)算機(jī)中的“中斷”模仿了人腦處理突發(fā)事件的過(guò)程。在人們的日常生活中,“中斷”現(xiàn)象十分普遍。例如,某人在看書,突然電話鈴響,此人就會(huì)“中斷”看書,并把書簽夾在正看書的頁(yè)碼中,然后去接電話,接完電話,又從書簽所做記號(hào)處繼續(xù)看書。這種日常生活中處理中斷的過(guò)程,幾乎完全被計(jì)算機(jī)繼承?!翱磿笨梢岳斫獬烧龍?zhí)行當(dāng)前程序;“電話鈴響”可視為“突發(fā)事件”,稱為“中斷源”;如果同時(shí)還有“門鈴響”、“水開了”等多個(gè)中斷源,這就有一個(gè)處理“事件”的先后次序問(wèn)題,計(jì)算機(jī)稱為“中斷優(yōu)先級(jí)”問(wèn)題;在書中用書簽做記號(hào)可認(rèn)為是“保護(hù)斷點(diǎn)”;接電話是執(zhí)行“中斷服務(wù)程序”;接完電話繼續(xù)看書為“中斷返回”。中斷與子程序有著本質(zhì)的區(qū)別,雖然它們都是停止當(dāng)前程序去執(zhí)行另一程序,然后返回繼續(xù)執(zhí)行原程序。但是,中斷是隨機(jī)發(fā)生的,而子程序是預(yù)先安排好的。用前面所舉的“看書接電話”的例子:“中斷”方式接電話時(shí),看書人預(yù)先并不知道看到哪一頁(yè)電話鈴會(huì)響;“子程序”方式接電話,則意味看書人看到某一頁(yè)(如p32)時(shí),電話鈴一定響。顯然,中斷方式比子程序更容易處理這類突發(fā)事件。中斷技術(shù)是計(jì)算機(jī)技術(shù)的一次飛躍。處理中斷的能力也在一定程度上反映了計(jì)算機(jī)能力的強(qiáng)弱。中斷技術(shù)具有以下主要優(yōu)點(diǎn):

(1)提高了CPU的工作效率。中斷可以解決快速的CPU與慢速的外設(shè)之間的矛盾。CPU在啟動(dòng)外設(shè)工作后繼續(xù)執(zhí)行主程序,同時(shí)外設(shè)也在工作。每當(dāng)外設(shè)做完一件事就向CPU發(fā)出中斷申請(qǐng),CPU停止它正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行給外設(shè)布置任務(wù)的程序(一般情況是處理輸入/輸出數(shù)據(jù)),布置完之后CPU恢復(fù)主程序的執(zhí)行,外設(shè)也繼續(xù)工作。用這樣的方式,CPU還可啟動(dòng)多個(gè)外設(shè)同時(shí)工作,大大地提高了CPU的效率。鍵盤、打印機(jī)、AD轉(zhuǎn)換器等處理速率較慢的外部設(shè)備一般都是采用中斷方式工作的。

(2)并行工作。中斷可使計(jì)算機(jī)多任務(wù)同時(shí)并行工作。計(jì)算機(jī)可以分時(shí)在多任務(wù)中輪換處理各自的任務(wù),從而在宏觀上顯示出并行工作。

(3)實(shí)時(shí)處理。在實(shí)時(shí)控制中,現(xiàn)場(chǎng)的各種參數(shù)、信息均隨時(shí)間而變化。這些外界變量可根據(jù)要求隨時(shí)向CPU發(fā)出中斷申請(qǐng),請(qǐng)求CPU及時(shí)處理。如中斷條件滿足,CPU馬上就會(huì)響應(yīng),進(jìn)行相應(yīng)的處理,從而實(shí)現(xiàn)實(shí)時(shí)處理。

(4)故障處理。針對(duì)難以預(yù)料的情況或故障,如掉電、存儲(chǔ)出錯(cuò)、運(yùn)算溢出等,可通過(guò)中斷系統(tǒng)由故障源向CPU發(fā)出中斷請(qǐng)求,再由CPU轉(zhuǎn)到相應(yīng)的故障處理程序進(jìn)行處理?;拘蚆CS-51系列單片機(jī)中的中斷系統(tǒng)屬于8位單片機(jī)中功能較強(qiáng)的一種中斷系統(tǒng),它可以提供5個(gè)中斷源,每個(gè)中斷源有兩個(gè)中斷優(yōu)先級(jí)別可供選擇,可實(shí)現(xiàn)兩級(jí)中斷服務(wù)程序嵌套。此外,所有中斷均可由軟件設(shè)定為允許中斷或禁止中斷,也就是說(shuō),用戶可以用關(guān)中斷指令(或復(fù)位)來(lái)屏蔽所有的中斷請(qǐng)求,也可以用開中斷指令使CPU接受中斷請(qǐng)求。MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)示意圖如圖6.2所示。6.2中斷系統(tǒng)的結(jié)構(gòu)基本型MCS-51系列單片機(jī)的5個(gè)中斷源為:

(1)外部中斷0請(qǐng)求:由INT0(P3.2)腳輸入,當(dāng)此口是低電平或是負(fù)跳變時(shí),就向CPU申請(qǐng)中斷。

(2)外部中斷1請(qǐng)求:由INT1(P3.3)腳輸入,當(dāng)此口是低電平或是負(fù)跳變時(shí),就向CPU申請(qǐng)中斷。

(3)定時(shí)器T0中斷請(qǐng)求:當(dāng)定時(shí)器T0產(chǎn)生溢出時(shí),請(qǐng)求中斷處理。

(4)定時(shí)器T1中斷請(qǐng)求:當(dāng)定時(shí)器T1產(chǎn)生溢出時(shí),請(qǐng)求中斷處理。

(5)串行中斷請(qǐng)求:當(dāng)接收或發(fā)送完一串行幀時(shí),請(qǐng)求中斷。

MCS-51系列增強(qiáng)型單片機(jī)如89C52有6個(gè)中斷源,即增加了定時(shí)/計(jì)數(shù)器2的中斷源。圖6.2MCS-51中斷系統(tǒng)結(jié)構(gòu)示意圖中斷控制系統(tǒng)包括中斷請(qǐng)求、中斷允許、中斷優(yōu)先級(jí)等,都是通過(guò)對(duì)單片機(jī)中的4個(gè)特殊功能寄存器TCON、SCON、IE、IP中的可尋址位的操作來(lái)完成的(實(shí)際上,MCS-51系列單片機(jī)的內(nèi)部功能都是通過(guò)對(duì)特殊功能寄存器的操作完成的)。下面分別介紹關(guān)于中斷的4個(gè)特殊功能寄存器。6.3中斷控制系統(tǒng)6.3.1中斷請(qǐng)求標(biāo)志寄存器(TCON、SCON)

TCON(Time/CounterControl)字節(jié)地址為88H,可位尋址,其格式如下:各位的功能如下:

●?IE0:外部中斷0(INT0)中斷申請(qǐng)標(biāo)志位。

●?IT0:外部中斷0(INT0)觸發(fā)方式選擇位。

IT0=0,電平觸發(fā)方式,即INT0為低電平時(shí),引起中斷。要求低電平一直要保持請(qǐng)求到CPU中斷同意為止。CPU不會(huì)自動(dòng)清除中斷請(qǐng)求標(biāo)志,要采用硬件方法才能清除。

IT0=1,跳變觸發(fā)方式,當(dāng)CPU前一個(gè)機(jī)器周期采集到引腳為高電平,后一個(gè)機(jī)器周期采集到INT0引腳為低電平時(shí)(即從“1”“0”,負(fù)跳變),置IE0=1,由IE0申請(qǐng)中斷。這種方式即使CPU暫時(shí)不響應(yīng)申請(qǐng)信號(hào),中斷申請(qǐng)也不會(huì)丟失。IE0進(jìn)入中斷時(shí)被硬件清除?!馮F0:定時(shí)器0溢出標(biāo)志位。當(dāng)定時(shí)器0計(jì)數(shù)產(chǎn)生溢出時(shí),由硬件自動(dòng)置TF0=1。在中斷允許時(shí),向CPU發(fā)出定時(shí)器0的中斷請(qǐng)求,進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清0。在中斷屏蔽時(shí),TF0可作查詢測(cè)試用,此時(shí)只能由軟件清0。

●?IE1:外部中斷1(INT1)請(qǐng)求標(biāo)志位,功能同IE0。

●?IT1:外部中斷1觸發(fā)方式選擇位,功能同IT0。

●?TF1:定時(shí)器1溢出標(biāo)志位,功能同TF0。

●?TR1、TR0定時(shí)器1、0運(yùn)行控制位將在第7章中講解。

TCON的功能可以很方便地用位操作指令來(lái)設(shè)置,如:

SETBIT1;外部中斷1選擇跳變觸發(fā)方式

CLRIT0;外部中斷0選擇電平觸發(fā)方式

這2條位操作指令也可合并為1條指令:

MOV TCON,#05H;TCON=00000101B

SCON(SerialControl)為串行口控制器,字節(jié)地址為98H。其低2位TI和RI鎖存串行口的發(fā)送中斷標(biāo)志和接收中斷標(biāo)志。其格式如下:各位功能如下:

●?TI:串行發(fā)送中斷標(biāo)志。CPU將數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),就啟動(dòng)發(fā)送,每發(fā)送完一個(gè)串行幀,硬件將使TI置位。但CPU響應(yīng)中斷時(shí)并不清除TI,必須由軟件

清除。?

●RI:串行接收中斷標(biāo)志。在串行口允許接收時(shí),每接收完一個(gè)串行幀,硬件將使RI置位。同樣,CPU在響應(yīng)中斷時(shí)不會(huì)清除RI,必須由軟件清除。

單片機(jī)系統(tǒng)復(fù)位后,TCON和SCON均清0,應(yīng)用時(shí)要注意各位的初始狀態(tài)。6.3.2中斷允許寄存器(IE)

計(jì)算機(jī)中斷系統(tǒng)有兩種不同類型的中斷:非屏蔽中斷和可屏蔽中斷。對(duì)非屏蔽中斷,用戶不能用軟件的方法加以禁止,一旦有中斷申請(qǐng),CPU必須予以響應(yīng)。對(duì)可屏蔽中斷,用戶可以通過(guò)軟件方法來(lái)控制是否允許某中斷源的中斷,允許中斷稱中斷開放,不允許中斷稱中斷屏蔽。MCS-51系列單片機(jī)的5個(gè)中斷源都是可屏蔽中斷,其中斷系統(tǒng)內(nèi)部設(shè)有一個(gè)專用寄存器IE,其字節(jié)地址為A8H,用于控制CPU對(duì)各中斷源的開放或屏蔽。IE(InterruptEnable)寄存器的格式及各位定義如下:

EA:總中斷允許控制位。EA=1,開放所有中斷,各中斷源的允許和禁止可通過(guò)相應(yīng)的中斷允許位單獨(dú)加以控制;EA=0,禁止所有中斷。

ES:串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷。

ET1:定時(shí)器1中斷允許位。ET1=1,允許定時(shí)器1中斷;ET1=0,禁止定時(shí)器1中斷。

EX1:外部中斷1中斷允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。

ET0:定時(shí)器0中斷允許位。ET0=1,允許定時(shí)器0中斷;ET0=0,禁止定時(shí)器0中斷。

EX0:外部中斷0中斷允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。

8051單片機(jī)系統(tǒng)復(fù)位后,IE中各中斷允許位均被清0,即禁止所有中斷??梢院芊奖愕赜梦徊僮髦噶铋_放或屏蔽某些中斷,如:

SETBEA ;開總中斷

SETBET1 ;開T1中斷

這2條位操作指令也可合并為1條指令:

MOVIE,#88H6.3.3中斷優(yōu)先寄存器(IP)及中斷嵌套

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

MCS-51系列單片機(jī)基本型有5個(gè)中斷源,當(dāng)多個(gè)中斷源同時(shí)發(fā)出中斷請(qǐng)求時(shí),要求單片機(jī)能確定哪個(gè)中斷更緊迫,以便首先響應(yīng)。為此,51系列單片機(jī)給每個(gè)中斷源規(guī)定了優(yōu)先級(jí)別,稱為優(yōu)先權(quán)。51系列單片機(jī)有兩個(gè)中斷優(yōu)先級(jí):高優(yōu)先級(jí)和低優(yōu)先級(jí)。每個(gè)中斷源都可以通過(guò)編程確定為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。寄存器IP(InterruptPriority)為中斷優(yōu)先級(jí)寄存器,字節(jié)地址為B8H,它鎖存各中斷源優(yōu)先級(jí)控制位,IP中的每一位均可由軟件來(lái)置1或清0,1表示高優(yōu)先級(jí),0表示低優(yōu)先級(jí)。其格式如下:各位定義及功能如下:

●?PS:串行口中斷優(yōu)先控制位。PS=1,設(shè)定串行口為高優(yōu)先級(jí)中斷;PS=0,設(shè)定串行口為低優(yōu)先級(jí)中斷。

●?PT1:定時(shí)器T1中斷優(yōu)先控制位。PT1=1,設(shè)定定時(shí)器T1中斷為高優(yōu)先級(jí)中斷;PT1=0,設(shè)定定時(shí)器T1中斷為低優(yōu)先級(jí)中斷。

●?PX1:外部中斷1中斷優(yōu)先控制位。PX1=1,設(shè)定外部中斷1為高優(yōu)先級(jí)中斷;PX1=0,設(shè)定外部中斷1為低優(yōu)先級(jí)中斷?!?PT0:定時(shí)器T0中斷優(yōu)先控制位。PT0=1,設(shè)定定時(shí)器T0中斷為高優(yōu)先級(jí)中斷;PT0=0,設(shè)定定時(shí)器T0中斷為低優(yōu)先級(jí)中斷。

●?PX0:外部中斷0中斷優(yōu)先控制位。PX0=1,設(shè)定外部中斷0為高優(yōu)先級(jí)中斷;PX0=0,設(shè)定外部中斷0為低優(yōu)先級(jí)中斷。

當(dāng)系統(tǒng)復(fù)位后,IP低5位全部清0,所有中斷源均設(shè)定為低優(yōu)先級(jí)中斷。

如果幾個(gè)同一優(yōu)先級(jí)的中斷源同時(shí)向CPU申請(qǐng)中斷,CPU通過(guò)內(nèi)部硬件查詢邏輯,按同級(jí)優(yōu)先級(jí)順序確定先響應(yīng)哪個(gè)中斷請(qǐng)求。51系列單片機(jī)中,同級(jí)優(yōu)先級(jí)由硬件形成,優(yōu)先級(jí)排隊(duì)的自然順序如表6.1所示。表?6.1中斷優(yōu)先級(jí)同級(jí)順序

MCS-51系列單片機(jī)中斷優(yōu)先級(jí)處理有三條原則:

●?CPU同時(shí)接受到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別高的中斷請(qǐng)求。

●正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。

●正進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。

MCS-51系列單片機(jī)內(nèi)部有兩個(gè)用戶不可尋址的“優(yōu)先級(jí)狀態(tài)觸發(fā)器”,由它來(lái)實(shí)現(xiàn)這些原則。當(dāng)其中一個(gè)置1時(shí),表示正在進(jìn)行高優(yōu)先級(jí)的中斷,它將阻止后來(lái)所有的中斷請(qǐng)求。當(dāng)另一個(gè)觸發(fā)器置1時(shí),表示低優(yōu)先級(jí)的中斷正在執(zhí)行,而后所有同級(jí)的中斷都被阻止,但不阻止高優(yōu)先級(jí)別的中斷。

按MCS-51系列單片機(jī)的中斷優(yōu)先排隊(duì)規(guī)則,大多數(shù)中斷排隊(duì)順序是可以實(shí)現(xiàn)的,但也有少數(shù)排隊(duì)順序無(wú)法實(shí)現(xiàn),如:INT0→T1→INT1→T0→PS這樣的排隊(duì)順序就因優(yōu)先級(jí)管理的限制而無(wú)法實(shí)現(xiàn)。

2.中斷嵌套

當(dāng)CPU正處理一個(gè)中斷請(qǐng)求時(shí),又出現(xiàn)一個(gè)優(yōu)先級(jí)比它高的中斷請(qǐng)求,CPU暫時(shí)中斷當(dāng)前的中斷,并保留斷點(diǎn),響應(yīng)高優(yōu)先級(jí)中斷,待高級(jí)中斷處理結(jié)束以后,再繼續(xù)進(jìn)行被打斷的低級(jí)中斷,這個(gè)過(guò)程稱為中斷嵌套,其示意圖如圖6.3所示。如果發(fā)出新的中斷請(qǐng)求的中斷源的優(yōu)先權(quán)級(jí)別與正在處理的中斷源同級(jí)或更低時(shí),CPU不會(huì)響應(yīng)這個(gè)中斷請(qǐng)求,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去處理新的中斷請(qǐng)求。圖6.3中斷嵌套流程圖6.4.1中斷響應(yīng)條件

當(dāng)單片機(jī)中斷源有請(qǐng)求,并在中斷允許寄存器IE相應(yīng)位置1時(shí)(包括總中斷EA=1和相應(yīng)的中斷允許位置1),在每個(gè)機(jī)器周期的S5P2期間,對(duì)所有中斷源按用戶設(shè)置的優(yōu)先級(jí)進(jìn)行順序檢測(cè),并在S6期間找到所有有效的中斷請(qǐng)求。如有中斷請(qǐng)求,且滿足下列三個(gè)條件,則在下一個(gè)機(jī)器周期的S1期間響應(yīng)中斷,否則將丟棄中斷采樣的結(jié)果。這個(gè)過(guò)程稱為中斷采集。6.4中斷處理過(guò)程

(1)無(wú)同級(jí)或高級(jí)中斷正在處理。

(2)現(xiàn)行指令執(zhí)行到最后一個(gè)機(jī)器周期且已結(jié)束。

(3)若現(xiàn)行指令為RETI或訪問(wèn)IE、IP的指令時(shí),執(zhí)行完該指令且緊隨其后的另一條指令也已執(zhí)行完畢。6.4.2中斷響應(yīng)過(guò)程

MCS-51系列單片機(jī)響應(yīng)中斷的過(guò)程較為復(fù)雜,精簡(jiǎn)敘述如下。

CPU響應(yīng)中斷后,由硬件自動(dòng)執(zhí)行如下的功能操作:

(1)中斷優(yōu)先級(jí)查詢,對(duì)相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器置1,阻止后來(lái)的同級(jí)或低級(jí)中斷請(qǐng)求。

(2)保護(hù)斷點(diǎn),即把程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧保存。

(3)硬件清除可清除的中斷請(qǐng)求標(biāo)志位(IE0、IE1、TF0、TF1)。

(4)把被響應(yīng)的中斷服務(wù)程序入口地址送入PC,由硬件生成長(zhǎng)調(diào)用指令LCALL轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序入口地址(又稱中斷矢量)去執(zhí)行中斷服務(wù)程序。各中斷服務(wù)程序的入口地址見表6.2。

(5)執(zhí)行完RETI指令后,返回原程序繼續(xù)運(yùn)行。表6.2中斷入口地址中斷響應(yīng)過(guò)程都是由單片機(jī)硬件自動(dòng)完成的,但中斷服務(wù)程序則必須由用戶自己編寫。對(duì)上述過(guò)程還需要做一些解釋:

(1)?51系列單片機(jī)CPU只是保護(hù)了“斷點(diǎn)”,而沒有保護(hù)“現(xiàn)場(chǎng)”,即沒有自動(dòng)保護(hù)PSW、A等寄存器或其它存儲(chǔ)器的內(nèi)容,如果需要,必須編寫軟件自己保護(hù),并在中斷服務(wù)后、中斷返回前恢復(fù)現(xiàn)場(chǎng)。

(2)響應(yīng)的中斷服務(wù)程序入口地址之間只相隔8個(gè)字節(jié)空間,如果中斷服務(wù)程序較長(zhǎng),無(wú)法容納,可寫一條跳轉(zhuǎn)指令,安排另一個(gè)較大的空間容納中斷服務(wù)程序。

(3)?RETI是中斷服務(wù)程序結(jié)束的標(biāo)記,CPU執(zhí)行完這條指令后,把響應(yīng)中斷時(shí)所置位的優(yōu)先級(jí)狀態(tài)觸發(fā)器清0,然后從堆棧中彈出頂上的兩個(gè)字節(jié)送到程序計(jì)數(shù)器PC,CPU從原來(lái)中斷處重新執(zhí)行被中斷的程序。

注意,不能用RET指令代替RETI指令,雖然用RET指令也能控制PC返回原來(lái)中斷的地址,但RET沒有清0優(yōu)先級(jí)狀態(tài)觸發(fā)器,中斷系統(tǒng)會(huì)認(rèn)為中斷仍在進(jìn)行,其結(jié)果是與此同級(jí)的中斷請(qǐng)求將不被響應(yīng)。所以用戶的中斷復(fù)位程序的最后一條指令必須是RETI。

如要詳細(xì)了解中斷響應(yīng)過(guò)程,需要分析中斷的響應(yīng)時(shí)序,如圖6.4所示。圖6.4中斷響應(yīng)時(shí)序圖中M1~M5表示機(jī)器周期。若中斷源在M1周期內(nèi)發(fā)生中斷請(qǐng)求,將置TCON中的對(duì)應(yīng)標(biāo)志位,且于S5P2期間其狀態(tài)被采集。在接著的M2機(jī)器周期,執(zhí)行中斷查詢和優(yōu)先級(jí)處理。如果執(zhí)行的當(dāng)前指令不是RET、RETI、IE、IP,而是其它指令的最后一個(gè)機(jī)器周期且中斷請(qǐng)求有效,CPU即響應(yīng)中斷。在M3、M4兩個(gè)機(jī)器周期中,內(nèi)部硬件自動(dòng)生成長(zhǎng)調(diào)用指令LCALL,并置位中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器,將斷點(diǎn)地址(PC的當(dāng)前值)壓入堆棧保護(hù),把對(duì)應(yīng)的中斷服務(wù)程序入口地址送PC,同時(shí)清除該中斷請(qǐng)求標(biāo)志位。但不會(huì)自動(dòng)清0串行通信的中斷請(qǐng)求標(biāo)志位RI、TI,必須通過(guò)軟件才能清除它們。在M5機(jī)器周期開始執(zhí)行中斷服務(wù)程序。

從中斷源提出中斷申請(qǐng),到CPU響應(yīng)中斷,自動(dòng)轉(zhuǎn)向中斷矢量地址,執(zhí)行中斷服務(wù)程序,直到返回?cái)帱c(diǎn)繼續(xù)原程序的執(zhí)行的過(guò)程,就是中斷響應(yīng)的全過(guò)程。6.4.3中斷的撤銷

MCS-51各中斷源中斷請(qǐng)求撤銷的方法各不相同,分別為:

(1)定時(shí)器中斷請(qǐng)求的撤銷。對(duì)于定時(shí)器0或1溢出中斷,CPU在響應(yīng)中斷后即由硬件自動(dòng)撤銷其中斷標(biāo)志位TF0或TF1,無(wú)需采取其它措施。

(2)串行口中斷請(qǐng)求的撤銷。對(duì)于串行口中斷,CPU在響應(yīng)中斷后,硬件不能自動(dòng)撤銷中斷請(qǐng)求標(biāo)志位TI、RI,必須在中斷服務(wù)程序中用軟件將其撤銷。

(3)外部中斷請(qǐng)求的撤銷。外部中斷可分為跳變觸發(fā)型和電平觸發(fā)型。對(duì)于跳變觸發(fā)的外部中斷0或1,CPU在響應(yīng)中斷后由硬件自動(dòng)清除其中斷標(biāo)志位IE0或IE1,無(wú)需采取其它措施。

對(duì)于電平觸發(fā)的外部中斷,其中斷請(qǐng)求撤除方法較復(fù)雜。首先CPU在響應(yīng)中斷后不會(huì)自動(dòng)清除其中斷標(biāo)志位IE0或IE1,在中斷返回前,應(yīng)撤銷(清除)該中斷請(qǐng)求標(biāo)志。其次,因低電平引起外部中斷,所以在CPU響應(yīng)中斷后,應(yīng)立即撤除引腳上的低電平,否則,就會(huì)引起重復(fù)中斷而導(dǎo)致錯(cuò)誤。由于CPU不能控制引腳的信號(hào),因此,只有通過(guò)硬件再配合相應(yīng)軟件才能解決這個(gè)問(wèn)題。圖6.5是可行方案之一。圖6.5撤除外部中斷請(qǐng)求的的電路由圖6.5可知,外部中斷請(qǐng)求信號(hào)不直接加在(或)引腳上。當(dāng)外部中斷請(qǐng)求的低電平有效信號(hào)經(jīng)反相器后送出到D觸發(fā)器的CLK端產(chǎn)生正跳變時(shí),端輸出為0,向單片機(jī)發(fā)出中斷請(qǐng)求??赏ㄟ^(guò)一根I/O口線(如P1.0)來(lái)控制端,輸入一個(gè)負(fù)脈沖(持續(xù)時(shí)間為2個(gè)機(jī)器周期),即可使置1,從而撤銷中斷請(qǐng)求。在中斷服務(wù)程序中采用以下三條指令:

CLRP1.0

NOP

SETBP1.0

它會(huì)在P1.0上輸出一個(gè)寬度為2個(gè)機(jī)器周期的負(fù)脈沖,使D觸發(fā)器復(fù)位,=1,撤消中斷請(qǐng)求,從而不會(huì)產(chǎn)生中斷請(qǐng)求。6.4.4外部中斷響應(yīng)的時(shí)間

中斷響應(yīng)時(shí)間是指從中斷請(qǐng)求標(biāo)志位置位到CPU開始執(zhí)行中斷服務(wù)程序的第一條指令所需要的時(shí)間。CPU并非每時(shí)每刻對(duì)中斷請(qǐng)求都予以響應(yīng)。另外,不同的中斷請(qǐng)求其響應(yīng)時(shí)間也是不同的。以外部中斷為例,CPU在每個(gè)機(jī)器周期的S5P2期間采樣其輸入引腳或端的電平,如果中斷請(qǐng)求有效,則置位中斷請(qǐng)求標(biāo)志位IE0或IE1,然后在下一個(gè)機(jī)器周期再對(duì)這些值進(jìn)行查詢,這就意味著中斷請(qǐng)求信號(hào)的低電平至少應(yīng)維持一個(gè)機(jī)器周期。這時(shí),如果滿足中斷響應(yīng)條件,則CPU響應(yīng)中斷請(qǐng)求,在下一個(gè)機(jī)器周期執(zhí)行一條硬件長(zhǎng)調(diào)用指令“LACLL”,使程序轉(zhuǎn)入中斷地址入口。該調(diào)用指令執(zhí)行時(shí)間是兩個(gè)機(jī)器周期,因此,外部中斷響應(yīng)時(shí)間至少需要3個(gè)機(jī)器周期,這是最短的中斷響應(yīng)時(shí)間。如果中斷請(qǐng)求不能滿足前面所述的三個(gè)條件而被阻斷,則要增加等待時(shí)間。例如一個(gè)同級(jí)或更高級(jí)的中斷正在進(jìn)行,則附加的等待時(shí)間取決于正在進(jìn)行的中斷服務(wù)程序的長(zhǎng)度,等待時(shí)間不確定。

若沒有同級(jí)或高優(yōu)先級(jí)的中斷正在進(jìn)行,所需要的附加等待時(shí)間在3~5個(gè)機(jī)器周期之間。這是因?yàn)椋?/p>

第一,如果正在執(zhí)行的一條指令還沒有進(jìn)行到最后一個(gè)機(jī)器周期,則附加的等待時(shí)間為1~3個(gè)機(jī)器周期(因?yàn)榧词故亲铋L(zhǎng)執(zhí)行時(shí)間的指令MUL、DIV,也只有4個(gè)機(jī)器周期)。第二,如果查詢周期恰逢RET、RETI或訪問(wèn)IE、IP指令(這些指令后面至少要再執(zhí)行一條指令才能接受中斷請(qǐng)求),而這些指令后又碰巧是MUL、DIV指令,則此時(shí)引起的附加時(shí)間不會(huì)超過(guò)5個(gè)機(jī)器周期(一個(gè)機(jī)器周期完成RET、RETI或IE、IP指令再加4個(gè)機(jī)器周期完成MUL、DIV)。

所以,對(duì)于外部中斷源,在沒有嵌套的單級(jí)中斷情況下,響應(yīng)時(shí)間為3個(gè)機(jī)器周期(最短響應(yīng)外部中斷時(shí)間)至8個(gè)機(jī)器周期(加最長(zhǎng)的5個(gè)機(jī)器周期附加時(shí)間)。

中斷響應(yīng)的時(shí)間會(huì)給一些高要求應(yīng)用造成時(shí)間差,請(qǐng)?jiān)趯?shí)際應(yīng)用中予以注意。

CPU在采集外部中斷時(shí),會(huì)檢測(cè)、引腳的電平,這個(gè)電平對(duì)中斷的觸發(fā)方式可定義為兩種:電平觸發(fā)方式和跳變觸發(fā)方式。

若外部中斷定義為電平觸發(fā)方式,則外部中斷申請(qǐng)標(biāo)志位(IE0、IE1)的狀態(tài)會(huì)隨CPU在每個(gè)機(jī)器周期采樣到的外部中斷輸入引腳的電平變化而變化。這樣能提高CPU對(duì)外部中斷請(qǐng)求的響應(yīng)速度。這種方式要求外部中斷請(qǐng)求的有效低電平一直保持到請(qǐng)求獲得響應(yīng)為止,不然就會(huì)丟失;并要求在中斷服務(wù)程序結(jié)束之前,及時(shí)撤銷其低電平,否則中斷返回之后將再次產(chǎn)生中斷。電平觸發(fā)方式適合于外部中斷輸入為低電平,且中斷服務(wù)程序能清除外部中斷請(qǐng)求源的情況。6.5外部中斷觸發(fā)方式的選擇若外部中斷定義為跳變觸發(fā)方式,則外部中斷申請(qǐng)標(biāo)志位(IE0、IE1)的狀態(tài)能被鎖住。原因是:定義為跳變觸發(fā)方式后,CPU在前一個(gè)機(jī)器周期采樣到外部中斷輸入為高電平,下一個(gè)機(jī)器周期采樣到為低電平時(shí)(即從“1”“0”,負(fù)跳變),則置IE0或IE1為邏輯1。這樣,即便是CPU暫時(shí)不能響應(yīng),中斷申請(qǐng)標(biāo)志也不會(huì)丟失。CPU響

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論