秦曉飛系列-單片機原理及應(yīng)用-第5章 中斷系統(tǒng)_第1頁
秦曉飛系列-單片機原理及應(yīng)用-第5章 中斷系統(tǒng)_第2頁
秦曉飛系列-單片機原理及應(yīng)用-第5章 中斷系統(tǒng)_第3頁
秦曉飛系列-單片機原理及應(yīng)用-第5章 中斷系統(tǒng)_第4頁
秦曉飛系列-單片機原理及應(yīng)用-第5章 中斷系統(tǒng)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章中斷系統(tǒng)主講教師:秦曉飛

上海理工大學光電學院第5章中斷系統(tǒng)§5.1微機的輸入/輸出方式§5.2中斷的概念§5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制§5.4中斷響應(yīng)及中斷處理過程§5.5中斷程序舉例5.1微機的輸入/輸出方式5.1微機的輸入/輸出方式5.1.1無條件傳送方式CPU總是認為外設(shè)在任何時刻都處于“準備好”的狀態(tài)。這種傳送方式不需要交換狀態(tài)信息,只需在程序中加入訪問外設(shè)的指令,數(shù)據(jù)傳送便可以實現(xiàn)。此種方法很少使用。5.1.2查詢傳送方式在輸入時,需要查詢外設(shè)的輸入數(shù)據(jù)是否準備好;在輸出時,需要查詢外設(shè)是否把上一次CPU輸出的數(shù)據(jù)處理完畢。查詢傳送也叫條件傳送:通過查詢外設(shè)的狀態(tài)信息,確信外設(shè)已處于“準備好”,計算機才發(fā)出訪問外設(shè)的指令,實現(xiàn)數(shù)據(jù)的傳送。狀態(tài)信息:一般為1位二進制碼。5.1微機的輸入/輸出方式5.1.2查詢傳送方式查詢傳送過程:5.1微機的輸入/輸出方式5.1.2查詢傳送方式查詢傳送的特點:優(yōu)點:通用性好,可以用于各類外設(shè)和CPU間的數(shù)據(jù)傳送。缺點:CPU在完成一次數(shù)據(jù)傳送后要等待很長時間才能進行下一次的傳送。在等待過程中,CPU不能進行其他操作,所以效率比較低。5.1.3直接存儲器存取(DMA,DirectMemoryAccess)方式CPU讓出數(shù)據(jù)總線(懸浮狀態(tài)),使外設(shè)和存儲器之間直接傳送(不通過CPU)數(shù)據(jù)的方式。適用于外設(shè)和存儲器之間有大量的數(shù)據(jù)需要傳送及外設(shè)工作速度很快的情況。5.1.4中斷傳送方式當CPU正在處理某事件的時候,外部發(fā)生的某一事件請求CPU迅速去處理,于是CPU暫時中止當前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)處理完該事件后,再返回到原來被中止的地方繼續(xù)原來的工作,這樣的過程稱為中斷。5.1微機的輸入/輸出方式5.1.4中斷傳送方式5.2中斷的概念5.2中斷的概念中斷系統(tǒng):實現(xiàn)中斷功能的部件稱為中斷系統(tǒng),又稱中斷機構(gòu)。中斷源:產(chǎn)生中斷的請求源稱為中斷源。中斷請求:中斷源向CPU提出的處理請求,稱為中斷請求或中斷申請。中斷響應(yīng)過程:CPU暫時中止自身的事物,轉(zhuǎn)去處理事件的過程,稱為CPU的中斷響應(yīng)過程。中斷服務(wù):對事件的整個處理過程,稱為中斷服務(wù)(或中斷處理)。中斷返回:中斷處理完畢,在返回到原來被中止的地方,稱為中斷返回。中斷方式的特點:①中斷方式消除了CPU在查詢方式中的等待現(xiàn)象,大大提高了CPU的工作效率。②將從現(xiàn)場采集的數(shù)據(jù)通過中斷方式及時傳送給CPU,經(jīng)過處理后可立即作出反應(yīng),實現(xiàn)現(xiàn)場控制。采用查詢方式很難做到及時采集,實時控制。5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.089C51/S51中斷系統(tǒng)結(jié)構(gòu)圖5-3中斷系統(tǒng)結(jié)構(gòu)5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.089C51/S51中斷系統(tǒng)結(jié)構(gòu)有5個中斷請求源(89C52有6個),4個用于中斷控制的寄存器IE、IP、TCON(用6位)和SCON(用2位),用來控制中斷的類型、中斷的開/關(guān)和各種中斷源的優(yōu)先級別。5個中斷源有兩個中斷優(yōu)先級,每個中斷源可以編程為高優(yōu)先級或低優(yōu)先級中斷,可以實現(xiàn)二級中斷服務(wù)程序嵌套。中斷技術(shù)實現(xiàn)的功能:①分時操作:計算機的中斷系統(tǒng)可以使CPU與外設(shè)同時工作。CPU在啟動外設(shè)后,便繼續(xù)執(zhí)行主程序;而外設(shè)被啟動后,開始進行準備工作。當外設(shè)準備就緒時,就向CPU發(fā)出中斷請求,CPU響應(yīng)該中斷請求并為其服務(wù)完畢后,返回原來的斷點處繼續(xù)運行主程序。外設(shè)在得到服務(wù)后,也繼續(xù)進行自己的工作。因此,CPU可以使多個外設(shè)同時工作,并分時為各外設(shè)提供服務(wù),從而提高了CPU的利用率和輸入和輸出的速度。②實時處理:當計算機用于實時控制時,請求CPU提供服務(wù)時隨機發(fā)生的。有了中斷系統(tǒng),CPU就可以立即響應(yīng)并加以處理。③故障處理:計算機在運行時往往會出現(xiàn)一些故障,如斷電、存儲器奇偶校驗出錯、運算溢出等。有了中斷系統(tǒng),當出現(xiàn)上述情況時,CPU可及時轉(zhuǎn)去執(zhí)行故障處理程序,自行處理故障而不必停機。5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.189C51/S51中斷源89C51/S51的5個中斷源:①INT0——外部中斷0請求,低電平有效。通過P3.2引腳輸入。②INT1——外部中斷1請求,低電平有效。通過P3.3引腳輸入。③T0——定時器/計數(shù)器0溢出中斷請求。④T1——定時器/計數(shù)器1溢出中斷請求。⑤TX/RX——串行口中斷請求。當串行口完成一幀數(shù)據(jù)的發(fā)送或接收時,便請求中斷。每個中斷源都對應(yīng)一個中斷請求標志位,它們設(shè)置在特殊功能寄存器TCON和SCON中。當這些中斷源請求中斷時,相應(yīng)的標志分別由TCON和SCON中的相應(yīng)位來鎖存。5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.189C51/S51中斷源中斷源常用信號來源:①I/O外設(shè):一般I/O設(shè)備在完成自身操作后,向CPU發(fā)出中斷請求。②硬件故障:故障引起斷電等后果時,須保存重要信息。③實時時鐘:定時控制或檢測,用定時中斷作為時鐘,實現(xiàn)固定時間延時。④為調(diào)試程序而設(shè)定的中斷源:調(diào)試斷點。其中,④由人為設(shè)定,為自愿中斷;①②③由隨機事件觸發(fā),為強迫中斷。5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制1.中斷請求標志①TF1:定時器/計數(shù)器T1溢出中斷請求標志位。當啟動T1計數(shù)后,T1從初值開始加1計數(shù),計數(shù)器最高位產(chǎn)生溢出時,由硬件使TF1置1,并向CPU發(fā)出中斷請求。當CPU響應(yīng)中斷時,硬件將自動對TF1清0。②TF0:定時器/計數(shù)器T0溢出中斷請求標志位。含義與TF1類同。③IE1:外部中斷1的中斷請求標志。

(P3.3)。當檢測到外部中斷引腳1上存在有效的中斷請求信號時,由硬件使IE1置1。④IE0:外部中斷0的中斷請求標志。

(P3.2)。其含義與IE1類同。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H圖5-4TCON中的中斷標志位5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制1.中斷請求標志⑤IT1:外部中斷1的中斷觸發(fā)方式控制位。

IT1=0時,外部中斷1程控為電平觸發(fā)方式。CPU在每一個機器周期S5P2期間采樣外部中斷請求引腳的輸入電平。若外部中斷1請求為低電平,則使IE1置1;若為高電平,則使IE1清0。

IT1=1時,外部中斷1程控為邊沿觸發(fā)方式。CPU在每一個機器周期S5P2期間采樣外部中斷請求引腳的輸入電平。如果在相繼的兩個機器周期采樣過程中,一個機器周期采樣到外部中斷1請求引腳為高電平,接著的下一個機器周期采樣到為低電平,則使IE1置1。直到CPU響應(yīng)該中斷時,才由硬件使IE1清0。⑥IT0:外部中斷0的中斷觸發(fā)方式控制位。其含義與IT1類同。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H圖5-4TCON中的中斷標志位5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制1.中斷請求標志①TI:串行口發(fā)送中斷請求標志。

CPU將一個數(shù)據(jù)寫入發(fā)送緩沖器SBUF時,就啟動發(fā)送。每發(fā)送完一幀串行數(shù)據(jù)后,硬件置位TI。但CPU響應(yīng)中斷時,并不清除TI,必須在中斷服務(wù)程序中由軟件對TI清0。②RI:串行口接收中斷請求標志。在串行口允許接收時,每接收完一個串行幀,硬件置位RI。同樣,CPU響應(yīng)中斷時不會清除RI,必須在中斷服務(wù)程序中由軟件對RI清0。圖5-5SCON中的中斷標志位TIRI

SCON(98H)9FH9EH9DH9CH9BH9AH99H98H5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制2.中斷允許控制①EA:中斷允許總控制位。

EA=0,屏蔽所有的中斷請求;

EA=1,CPU開放中斷。對各中斷源的中斷請求是否允許,還要取決于各中斷源的中斷允許控制位的狀態(tài)。這就是所謂的兩級控制。②ES:串行口中斷允許位。

ES=0,禁止串行口中斷; ES=1,允許串行口中斷。③ET1:定時器/計數(shù)器T1的溢出中斷允許位。

ET1=0,禁止T1中斷; ET1=1,允許T1中斷。④EX1:外部中斷1的溢出中斷允許位。

EX1=0,禁止外部中斷1中斷; EX1=1,允許外部中斷1中斷。⑤ET0:定時器/計數(shù)器T0的溢出中斷允許位。

ET0=0,禁止T0中斷; ET0=1,允許T0中斷。⑥EX0:外部中斷0的溢出中斷允許位。

EX0=0,禁止外部中斷0中斷; EX0=1,允許外部中斷0中斷。圖5-6IE中的中斷允許控制位EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8H5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制2.中斷允許控制例5-1:假設(shè)允許片內(nèi)定時器/計數(shù)器中斷,禁止其他中斷。試根據(jù)假設(shè)條件設(shè)置IE的相應(yīng)值。解:

(IE)=10001010B=8AH

(a)用字節(jié)操作指令 MOVIE,#8AH;或MOVA8H,#8AH;

(b)用位操作指令SETBET0;定時器/計數(shù)器0允許中斷SETBET1;定時器/計數(shù)器1允許中斷SETBEA;CPU開中斷圖5-6IE中的中斷允許控制位EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8H5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制3.中斷優(yōu)先級控制89C51/S51有兩個中斷優(yōu)先級。每個中斷請求源均可編程為高優(yōu)先級或低優(yōu)先級。中斷系統(tǒng)中有兩個不可尋址的“優(yōu)先級生效”觸發(fā)器,分別指出CPU正在執(zhí)行的高、低優(yōu)先級的中斷服務(wù)程序。當其為1時則分別屏蔽所有的中斷請求。①PS:串行口中斷優(yōu)先級控制位②PT1:定時器/計數(shù)器T1中斷優(yōu)先級控制位③PX1:外部中斷1中斷優(yōu)先級控制位④PT0:定時器/計數(shù)器T0中斷優(yōu)先級控制位⑤PX0:外部中斷0中斷優(yōu)先級控制位若某控制位為1,則相應(yīng)的中斷源規(guī)定為高級中斷;反之,為0,則相應(yīng)的中斷源規(guī)定為低級中斷。圖5-7IP中的中斷優(yōu)先級控制位PSPT1PX1PT0PX0IP(B8H)

BCHBBHBAHB9HB8H5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制3.中斷優(yōu)先級控制同級內(nèi)多個中斷響應(yīng)順序當同時接收到幾個同一優(yōu)先級的中斷請求時,響應(yīng)哪個中斷源則取決于內(nèi)部硬件查詢順序。中斷源 同級內(nèi)的中斷優(yōu)先級外部中斷0中斷高級定時器/計數(shù)器T0溢出中斷外部中斷1定時器/計數(shù)器T1溢出中斷串行口中斷低級圖5-8中斷源優(yōu)先級排列順序5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制3.中斷優(yōu)先級控制中斷優(yōu)先級控制實現(xiàn)的功能①按內(nèi)部查詢順序排隊當數(shù)個中斷源同時向CPU發(fā)出中斷請求時,CPU根據(jù)設(shè)計者事先確定的中斷源順序號的次序,依次響應(yīng)其中斷請求。②實現(xiàn)中斷嵌套當CPU正在處理一個中斷請求時,又出現(xiàn)了另一個優(yōu)先級比它高的中斷請求,這時,CPU就暫時中止執(zhí)行對原來優(yōu)先級較低的中斷源的服務(wù)程序,保護當前斷點,轉(zhuǎn)去響應(yīng)優(yōu)先級更高的中斷請求,并為它服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來較低級的中斷服務(wù)程序。該過程稱為中斷嵌套。該中斷系統(tǒng)稱為多級中斷系統(tǒng)。CPU在執(zhí)行主程序低級中斷請求響應(yīng)低級中斷請求CPU執(zhí)行低級中斷服務(wù)程序高級中斷請求響應(yīng)高級中斷請求CPU執(zhí)行高級中斷服務(wù)程序返回低級中斷程序返回主程序圖5-9二級中斷嵌套5.389C51/S51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.3.2中斷控制3.中斷優(yōu)先級控制例5-2:設(shè)8031的片外中斷為高優(yōu)先級,片內(nèi)中斷為低優(yōu)先級。設(shè)置IP相應(yīng)值。解:(IP)=00000101B=05H

(a)用字節(jié)操作指令

MOVIP,#05H;或MOV0B8H,#05H; (b)用為操作指令

SETBPX0SETBPX1CLRPSCLRPT0CLRPT1PSPT1PX1PT0PX0IP(B8H)

BCHBBHBAHB9HB8H5.4中斷響應(yīng)及中斷處理過程5.4中斷響應(yīng)及中斷處理過程在89C51/S51內(nèi)部,中斷表現(xiàn)為CPU的微查詢操作89C51/S51在每個機器周期的S6中查詢中斷源,在下一個機器周期的S1中響應(yīng)。中斷處理過程可分為3個階段①中斷響應(yīng)②中斷處理③中斷返回保護現(xiàn)場為外設(shè)服務(wù)恢復(fù)現(xiàn)場主程序NKN+mK+1返回中斷處理圖5-10中斷處理的大致流程5.4中斷響應(yīng)及中斷處理過程5.4.1中斷響應(yīng)1.中斷響應(yīng)條件①有中斷源發(fā)出中斷請求。②中斷總允許位EA=1,即CPU中斷。③申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽。④無同級或更高級中斷正在被服務(wù)。⑤當前的指令周期已經(jīng)結(jié)束。⑥若現(xiàn)行指令為RETI或是訪問IE或IP指令時,該指令以及緊接著的另一條指令已執(zhí)行完。5.4中斷響應(yīng)及中斷處理過程5.4.1中斷響應(yīng)2.中斷響應(yīng)的自主操作過程89C51/S51的CPU在每個機器周期的S5P2期間順序采樣每個中斷源,CPU在下一個機器周期S6期間按優(yōu)先級順序查詢中斷標志。如查詢到某個中斷標志為1,則將在接下來的機器周期S1期間按優(yōu)先級進行中斷處理。中斷系統(tǒng)通過硬件自動將相應(yīng)的中斷矢量地址裝入PC,以便進入相應(yīng)的中斷服務(wù)程序。表現(xiàn)為CPU的自主操作。89C51/S51單片機的中斷系統(tǒng)中有兩個不可編程的“優(yōu)先級生效”觸發(fā)器。一個是“高優(yōu)先級生效”觸發(fā)器,用以指明已進行高級中斷服務(wù),并阻止其他一切中斷請求;一個是“低優(yōu)先級生效”觸發(fā)器,用以指明已進行低優(yōu)先級中斷服務(wù),并阻止除高優(yōu)先級以外的一切中斷請求。89C51/S51單片機一旦響應(yīng)中斷,首先置位相應(yīng)的中斷“優(yōu)先級生效”觸發(fā)器,然后由硬件執(zhí)行一條長調(diào)用指令LCALL,把當前PC值壓入堆棧,以保護斷點,再將相應(yīng)的中斷服務(wù)程序的入口地址(如外中斷0的入口地址為0003H)送入PC,于是CPU接著從中斷服務(wù)程序的入口處開始執(zhí)行。5.4中斷響應(yīng)及中斷處理過程5.4.1中斷響應(yīng)2.中斷響應(yīng)的自主操作過程對于有些中斷源,CPU在響應(yīng)中斷后會自動清除中斷標志,如定時器溢出標志TF0、TF1和邊沿觸發(fā)方式下的外部中斷標志IE0、IE1;而有些中斷標志不會自動清除,只能由用戶用軟件清除,如串行口接收發(fā)送中斷標志RI、TI;在電平觸發(fā)方式下的外部中斷標志IE0和IE1,則是根據(jù)引腳INT0和INT1的電平變化的,CPU無法直接干預(yù),需在引腳外加硬件(如D觸發(fā)器)使其自動撤銷外部中斷請求。綜上,中斷響應(yīng)的自主操作如下:①把當前PC值壓入堆棧,保護斷點。②將相應(yīng)的中斷服務(wù)程序的入口地址送入PC。③對有些中斷源,CPU會自動清除中斷標志。④執(zhí)行中斷服務(wù)程序。⑤執(zhí)行到返回指令RETI,中斷服務(wù)程序結(jié)束,將堆棧內(nèi)容彈出到PC,返回到原來斷點繼續(xù)執(zhí)行。5.4中斷響應(yīng)及中斷處理過程5.4.1中斷響應(yīng)3.中斷響應(yīng)時間CPU不是在任何情況下都對中斷請求予以響應(yīng),而不同的情況下對中斷響應(yīng)的時間是不同的。對于順利的中斷響應(yīng),其最短的響應(yīng)時間為3個機器周期。對于受阻的中斷響應(yīng),則響應(yīng)時間會更長一些。若中斷系統(tǒng)只有一個中斷源,則響應(yīng)時間為3~8個機器周期之間。

+

+S1S2S3S4S5S6S1S2S3S4S5S6S1S2S3S4S5S6S1S2S3S4S5S6將中斷源鎖存到標志位查詢到中斷標志,硬件調(diào)用LCALL執(zhí)行LCALL所用時間3個機器周期正在執(zhí)行的RET剩余的1個機器周期下一條指令周期(1~4)5.4中斷響應(yīng)及中斷處理過程5.4.2中斷處理1.中斷處理概念CPU響應(yīng)中斷后即轉(zhuǎn)入中斷服務(wù)程序的入口,執(zhí)行中斷服務(wù)程序。從中斷服務(wù)程序的第一條指令開始到返回指令為止,這個過程稱為中斷處理或中斷服務(wù)。2.中斷處理包括的內(nèi)容不同的中斷源服務(wù)的內(nèi)容及要求各不相同,其處理過程也就有所區(qū)別。一般情況,中斷處理包括兩部分內(nèi)容:①保護現(xiàn)場:如在中斷服務(wù)程序中要用到PSW、工作寄存器和SFR等寄存器時,則在進入中斷服務(wù)之前應(yīng)將它們的內(nèi)容保護起來,在中斷結(jié)束、執(zhí)行RETI指令前應(yīng)恢復(fù)現(xiàn)場。②為中斷源服務(wù):針對中斷源的具體要求進行相應(yīng)的處理。5.4中斷響應(yīng)及中斷處理過程5.4.2中斷處理3.編寫中斷服務(wù)程序時的注意問題①中斷矢量入口之間只有8個字節(jié),不足以存放ISR,通常在中斷矢量地址單元處放一條無條件轉(zhuǎn)移指令,使中斷服務(wù)程序可靈活地安排在64KBROM的任何空間。②在中斷服務(wù)程序中,應(yīng)注意用軟件保護現(xiàn)場,以免中斷返回后丟失原來寄存器、累加器中的信息。③若要在執(zhí)行當前中斷程序時禁止更高優(yōu)先級中斷,可以先用軟件關(guān)閉CPU中斷或禁止某中斷源中斷,在中斷返回前再開放中斷。④在保護現(xiàn)場和恢復(fù)現(xiàn)場時,為了不使現(xiàn)場信息受到破壞或造成混亂,一般在此情況下,應(yīng)關(guān)CPU中斷,使CPU暫不響應(yīng)新的中斷請求。這樣就要求在編寫中斷服務(wù)程序時,應(yīng)注意在保護現(xiàn)場之前關(guān)中斷,在保護現(xiàn)場之后若允許高優(yōu)先級中斷打斷它,則應(yīng)開中斷。同樣在恢復(fù)現(xiàn)場之前應(yīng)關(guān)中斷,恢復(fù)之后再開中斷。5.4.3中斷返回在中斷服務(wù)程序中,最后一條指令必須為中斷返回指令RETI。CPU執(zhí)行該指令時,一方面清除中斷響應(yīng)時所置位的“優(yōu)先級生效”觸發(fā)器,另一方面從當前棧頂彈出斷點地址送入程序計數(shù)器PC,從而返回主程序。注意在中斷服務(wù)程序中,PUSH和POP指令必須成對使用,否則,不能正確返回斷點。圖5-11中斷服務(wù)子程序流程圖5.5中斷程序舉例5.5中斷程序舉例5.5.1主程序1.主程序的起始地址89C51/S51系列單片機復(fù)位后,(PC)=0000H,而0003H~002BH分別為各中斷源的入口地址。編程時應(yīng)在0000H處寫一條跳轉(zhuǎn)指令(一般為長跳轉(zhuǎn)指令),主程序是以跳轉(zhuǎn)的目標地址作為起始地址開始編寫,一般從0030H開始。2.主程序的初始化內(nèi)容

初始化:將用到的內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設(shè)定。單片機復(fù)位后,特殊功能寄存器IE、IP內(nèi)容均為00H,所以應(yīng)對IE、IP進行初始化編程,以開放中斷,允許某些中斷源中斷和設(shè)置中斷優(yōu)先級等。0000HLJMP00300030H主程序圖5-12主程序地址安排5.5中斷程序舉例5.5.2中斷服務(wù)程序1.中斷服務(wù)程序的起始地址當CPU接收到中斷請求信號并予以響應(yīng)后,CPU把當前的PC內(nèi)容壓入堆棧進行保護,然后轉(zhuǎn)入響應(yīng)的中斷服務(wù)程序入口處執(zhí)行。中斷系統(tǒng)對五個中斷源分別規(guī)定了各自的入口地址,但這些入口地址相距很近(8個字節(jié))。如中斷服務(wù)程序的指令代碼少于8個字節(jié),則可從規(guī)定的中斷服務(wù)程序入口地址開始,直接編寫中斷服務(wù)程序;如中斷服務(wù)程序的指令代碼大于8個字節(jié),則應(yīng)采用與主程序相同的方法,在相應(yīng)的入口處寫一條跳轉(zhuǎn)指令,并以跳轉(zhuǎn)指令的目標地址作為中斷服務(wù)程序的起始地址進行編程。以INT0為例,中斷矢量地址為0003H,中斷服務(wù)程序從0200H開始。0003HLJMP02000200H中斷服務(wù)程序圖5-13中斷服務(wù)程序地址安排5.5中斷程序舉例5.5.2中斷服務(wù)程序2.中斷服務(wù)程序編寫中的注意事項①視需要確定是否保護現(xiàn)場。②及時清除那些不能被硬件自動清除的中斷請求標志,以免產(chǎn)生錯誤的中斷。③中斷服務(wù)程序中的壓棧與彈棧指令必須成對使用,以確保中斷服務(wù)程序的正確返回。④主程序和中斷服務(wù)程序之間的參數(shù)傳遞,與主程序和子程序的參數(shù)傳遞方式相同。注:與5.4節(jié)內(nèi)容重復(fù),加深印象。5.5中斷程序舉例5.5.3程序舉例例5-3:如圖5-14所示,將P1口的P1.4~P1.7作為輸入位,P1.0~P1.3作為輸出位。要求利用89C51/S51將開關(guān)所設(shè)的數(shù)據(jù)讀入單片機內(nèi),并依次通過P1.0~P1.3輸出,驅(qū)動發(fā)光二極管,以檢查P1.4~P1.7輸入的電平情況(若輸入為高電平則相應(yīng)的LED亮)?,F(xiàn)要求采用中斷邊沿觸發(fā)方式,每中斷一次,完成一次讀/寫操作。圖5-14外部中斷電路5.5中斷程序舉例5.5.3程序舉例解:如圖所示,采用外部中斷0,中斷申請從INT0輸入,并采用了去抖動電路。當P1.0~P1.3的任何一位輸出0時,相應(yīng)的發(fā)光二極管就會發(fā)光。當開關(guān)K來回拔動一次時,將產(chǎn)生一個下降沿信號,通過INT0發(fā)出中斷請求。中斷服務(wù)程序的矢量地址為0003H。主程序如下: ORG0000H LJMPMAIN;上電,轉(zhuǎn)向主程序 ORG0003H;外部中斷0入口地址 LJMPINSER;轉(zhuǎn)向中斷服務(wù)程序 ORG0030H;主程序MAIN: SETBEX0;允許外部中斷0中斷 SETBIT0;選擇邊沿觸發(fā)方式 SETBEA;CPU開中斷HERE:

溫馨提示

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

評論

0/150

提交評論