![第5章中斷系統(tǒng)1_第1頁](http://file4.renrendoc.com/view/8764cb9a3b590daa661db78ae39c63fd/8764cb9a3b590daa661db78ae39c63fd1.gif)
![第5章中斷系統(tǒng)1_第2頁](http://file4.renrendoc.com/view/8764cb9a3b590daa661db78ae39c63fd/8764cb9a3b590daa661db78ae39c63fd2.gif)
![第5章中斷系統(tǒng)1_第3頁](http://file4.renrendoc.com/view/8764cb9a3b590daa661db78ae39c63fd/8764cb9a3b590daa661db78ae39c63fd3.gif)
![第5章中斷系統(tǒng)1_第4頁](http://file4.renrendoc.com/view/8764cb9a3b590daa661db78ae39c63fd/8764cb9a3b590daa661db78ae39c63fd4.gif)
![第5章中斷系統(tǒng)1_第5頁](http://file4.renrendoc.com/view/8764cb9a3b590daa661db78ae39c63fd/8764cb9a3b590daa661db78ae39c63fd5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章中斷系統(tǒng)
5.1微機的輸入/輸出方式5.2中斷的概念5.389C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.4中斷處理過程5.5外部中斷擴展方法5.6中斷程序舉例1
5.1微機的輸入/輸出方式
單片機系統(tǒng)的運行同其他微機系統(tǒng)一樣,CPU不斷地與外部輸入/輸出設(shè)備交換信息。CPU與外部設(shè)備交換信息通常有以下幾種方式:
①
程序控制傳送方式,指用輸入/輸出指令,來控制信息傳輸?shù)姆绞剑且环N軟件控制方式。根據(jù)程序控制的方法,分為無條件傳送方式和查詢(條件)傳送方式。
②
中斷傳送方式。
③
直接存儲器存?。―MA)方式。什么是外部設(shè)備?25.1.1無條件傳送方式
這種數(shù)據(jù)傳送方式有些類似于CPU和存儲器之間的數(shù)據(jù)傳送,即CPU總是認為外設(shè)在任何時刻都是處于“準(zhǔn)備好”的狀態(tài)。因此,這種傳送方式不需要交換狀態(tài)信息,只需在程序中加入訪問外設(shè)的指令,數(shù)據(jù)傳送便可以實現(xiàn),但此種方法很少使用。適用于那些能隨時讀寫的設(shè)備。
3輸入狀態(tài)信息準(zhǔn)備好?傳送數(shù)據(jù)5.1.2查詢(條件)傳送方式查詢傳送方式:通過查詢外設(shè)的狀態(tài)信息,確信外設(shè)已處于“準(zhǔn)備好”,計算機才發(fā)出訪問外設(shè)的指令,實現(xiàn)數(shù)據(jù)的傳送。在輸入時,需要查詢外設(shè)的輸入數(shù)據(jù)是否準(zhǔn)備好;當(dāng)數(shù)據(jù)準(zhǔn)備好后,發(fā)出一個選通信號,一邊把數(shù)據(jù)送入鎖存器,一邊使D觸發(fā)器為“1”,給出“準(zhǔn)備好”的狀態(tài)信號。而數(shù)據(jù)與狀態(tài)必須由不同的端口輸至CPU數(shù)據(jù)總線。45.1.2查詢(條件)傳送方式在輸出時,在輸出時CPU也必須了解外設(shè)的狀態(tài),看外設(shè)是否有空查詢方式下CPU利用率低(程序循環(huán)等待),接口需向CPU提供查詢狀態(tài)。適用于CPU不太忙,傳送速度要求不高的場合。55.1.3直接存儲器存?。―MA)方式
DMA:DirectMemoryAccess外設(shè)利用專用的接口(DMA控制器)直接與存儲器進行高速數(shù)據(jù)傳送,并不經(jīng)過CPU(CPU不參與數(shù)據(jù)傳送工作),總線控制權(quán)不在CPU處,而由DMA控制器控制。其特點是接口電路復(fù)雜,硬件開銷大。大批量數(shù)據(jù)傳送速度極快。適用于存儲器與存儲器之間、存儲器與外設(shè)之間的大批量數(shù)據(jù)傳送的場合。同其他計算機系統(tǒng)一樣,單片機系統(tǒng)還有另一種非常重要的數(shù)據(jù)輸入/輸出方式——中斷方式。
6
5.2中斷的概念CPU正在執(zhí)行主程序,突然,被意外事情打斷,轉(zhuǎn)去執(zhí)行新程序。CPU執(zhí)行新程序結(jié)束后,又回到主程序中繼續(xù)執(zhí)行。這樣的過程就叫中斷某人看書 執(zhí)行主程序
中斷過程電話鈴響
中斷信號INTx=0 中斷請求暫停看書 暫停執(zhí)行主程序中斷響應(yīng)書中作記號當(dāng)前PC值入棧 保護斷點電話談話
執(zhí)行中斷程序 中斷服務(wù)繼續(xù)看書 返回主程序 中斷返回7中斷系統(tǒng)中的幾個基本概念:中斷源:能引起中斷的事件主程序:中斷發(fā)生前CPU正在執(zhí)行的的程序代碼斷點:中斷發(fā)生時,主程序被斷開的位置中斷服務(wù)子程序:處理隨機事件的程序中斷系統(tǒng):在微處理器中,能夠?qū)崿F(xiàn)中斷響應(yīng)、中斷處理中斷返回的功能部件8中斷流程圖執(zhí)行主程序主程序繼續(xù)執(zhí)行主程序斷點中斷請求中斷響應(yīng)執(zhí)行中斷處理程序中斷返回9
對突發(fā)事故,做出緊急處理。根據(jù)現(xiàn)場隨時變化的各種參數(shù)、信息,做出實時監(jiān)控。
CPU與外部設(shè)備并行工作,以中斷方式相聯(lián)系,提高工作效率。解決快速CPU與慢速外設(shè)之間的矛盾。在多項外部設(shè)備同時提出中斷請求情況下,CPU能根據(jù)輕重緩急(優(yōu)先級)響應(yīng)外設(shè)的中斷請求。中斷的作用:10
5.389C51中斷結(jié)構(gòu)及中斷控制
89C51有5個中斷源(89C52有6個),4個中斷控制寄存器,2個優(yōu)先級,可實現(xiàn)二級中斷嵌套。11中斷是計算機的一個重要功能。采用中斷技術(shù)能實現(xiàn)以下的功能:
①
分時操作 可以使CPU和多個外設(shè)同時工作,并分時為各外設(shè)提供服務(wù),從而提高了CPU的利用率和輸入和輸出的速度②
實時處理 當(dāng)計算機用于實時控制時,請求CPU提供服務(wù)時隨機發(fā)生的。有了中斷系統(tǒng),CPU就可以立即響應(yīng)并加以處理③
故障處理。 有了中斷系統(tǒng),當(dāng)出現(xiàn)故障時,CPU可及時轉(zhuǎn)去執(zhí)行故障處理程序,自行處理故障而不必停機。12中斷源:能發(fā)出中斷請求信號的各種事件89C51中斷系統(tǒng)的五個中斷源為:外部中斷2個:①INT0:外部中斷0請求,由P3.2引腳輸入②INT1:外部中斷1請求,由P3.3引腳輸入內(nèi)部中斷3個:③T0:定時器/計數(shù)器0溢出中斷請求,無引入端。④T1:定時器/計數(shù)器1溢出中斷請求,無引入端。⑤TXD/RXD:串行口中斷請求,當(dāng)串行口完成一幀數(shù)據(jù)的發(fā)送或接收時,便請求中斷,無引入端。每個中斷源都對應(yīng)一個中斷請求標(biāo)志位,他們設(shè)置在特殊功能寄存器TCON和SCON中。5.3.189C51中斷源1389C51中斷系統(tǒng)有以下四個特殊功能寄存器:1)中斷請求標(biāo)志
定時控制寄存器TCON(用六位)串行口控制寄存器SCON(用二位)2)中斷允許控制
中斷允許寄存器IE3)中斷優(yōu)先級控制中斷優(yōu)先級寄存器IP
其中,TCON和SCON只有一部分位用于中斷控制。通過對以上各特殊功能寄存器的各位進行置位或復(fù)位等操作,可實現(xiàn)各種中斷控制功能。
5.3.2中斷控制
14TF1——定時器/計數(shù)器T1的溢出中斷請求標(biāo)志位。當(dāng)CPU響應(yīng)中斷時,硬件將自動對TF1清0。TF0——(TimeoverflowFlag)定時器/計數(shù)器T0的溢出中斷請求標(biāo)志位。含義與TF1相同。IE1——(InterruptEdgeflag)外部中斷1的中斷請求標(biāo)志。當(dāng)CPU響應(yīng)該中斷請求時,由硬件使IE1清0。IT1——外部中斷1的中斷觸發(fā)方式控制位。
IE0——外部中斷0的中斷請求標(biāo)志。其含義與IE1相同。
IT0——(InterruptTypeControl)外部中斷0的中斷觸發(fā)方式控制位。其含義與IT1同。1、TCON中的中斷標(biāo)志位TF1TF0IE1IT1IE0IT0TCON(88H)15IT1/0(InterruptTypeControlbit)IT1/0=0:電平觸發(fā)方式,CPU每個機器周期S5P2期間采樣外部中斷請求引腳,若引腳為低電平,則使IE1置1;為高電平使IE1清0。IT1/0=1:邊沿觸發(fā)方式,在連續(xù)的2個機器周期內(nèi),若外部中斷1/0的中斷請求為先高后低(下降沿),則使IE1置1。當(dāng)CPU響應(yīng)該中斷時,由硬件使IE1清0。16SCON為串行口控制寄存器,其低2位鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志RI和TI。
①TI——串行口發(fā)送中斷請求標(biāo)志。CPU將一個數(shù)據(jù)寫入發(fā)送緩沖器SBUF時,就啟動發(fā)送。每發(fā)送完一幀串行數(shù)據(jù)后,硬件置位TI。但CPU響應(yīng)中斷時,并不清除TI,必須在中斷服務(wù)程序中由軟件對TI清0。
②RI——串行口接收中斷請求標(biāo)志。在串行口允許接收時,每接收完一個串行幀,硬件置位RI。同樣,CPU響應(yīng)中斷時不會清除RI,必須用軟件對其清0。
2.SCON中的中斷標(biāo)志位
TIRISCON98H172)中斷允許控制
89C51對中斷源的開放或屏蔽是由中斷允許寄存器IE控制的。中斷允許寄存器IE對中斷的開放和關(guān)閉實現(xiàn)兩級控制。所謂兩級控制,就是有一個總的開關(guān)中斷控制位EA(IE.7),當(dāng)EA=0時,屏蔽所有的中斷申請,即任何中斷申請都不接受;當(dāng)EA=1時,CPU開放中斷,但五個中斷源還要由IE的低5位的各對應(yīng)控制位的狀態(tài)進行中斷允許控制。18
IE中各位的含義如下:
①
EA——(EnableAllInterrupt)中斷允許總控制位②
ES——(EnabletheSerialPort)串行口中斷允許位。③
ET1—(EnabletheTimer)定時器/計數(shù)器T1的溢出中斷允許位。④
EX1——(EnabletheExternalInterrupt)外部中斷1中斷允許位。⑤ET0——定時器/計數(shù)器T0的溢出中斷允許位。⑥
EX0——外部中斷0中斷允許位。該位是“1”時,為允許中斷,該位是“0”時,為禁止中斷EAESET1EX1ET0EX0IE
A8H19例5-1:假設(shè)允許片內(nèi)定時器/計數(shù)器中斷,禁止其他中斷。試根據(jù)假設(shè)條件設(shè)置IE的相應(yīng)值。
解:(a)用字節(jié)操作指令MOVIE,#8AH或MOVA8H,#8AH;#8AH=10001010B(b)用位操作指令SETBET0;定時器/計數(shù)器0允許中斷SETBET1;定時器/計數(shù)器1允許中斷SETBEA;CPU開中斷2089C51有兩個中斷優(yōu)先級。每一個中斷請求源均可編程為高優(yōu)先級中斷或低優(yōu)先級中斷。各位的含義如下:①
PS——串行口中斷優(yōu)先級控制位。②
PT1——定時器/計數(shù)器T1中斷優(yōu)先級控制位。③
PX1——外部中斷1中斷優(yōu)先級控制位。④
PT0——定時器/計數(shù)器T0中斷優(yōu)先級控制位。⑤
PX0——外部中斷0中斷優(yōu)先級控制位。
IP
B8H該位是“1”時,為高級優(yōu)先級,該位是“0”時,為低級優(yōu)先級3)中斷優(yōu)先級(priority)控制PSPT1PX1PT0PX021/INT0中斷
T0溢出中斷
/INT1中斷
T1溢出中斷串口中斷
高低出廠前已由廠家固化順序——事先約定同一級中的5個中斷源的優(yōu)先順序是:22中斷優(yōu)先原則:(概括為四句話)1、低級不打斷高級2、高級不睬低級3、同級不能打斷4、同級、同時中斷,事先約定。23低級中斷請求響低應(yīng)中級斷響高應(yīng)中級斷序主回返程回返低中級斷
CPU執(zhí)行CPU執(zhí)行低級CPU執(zhí)行高級主程序中斷服務(wù)程序中斷服務(wù)程序圖5-9二級中斷嵌套24例5-2:設(shè)89C51的片外中斷為高優(yōu)先級,片內(nèi)中斷為低優(yōu)先級。試設(shè)置IP相應(yīng)值。
解:(a)用字節(jié)操作指令MOVIP,#05H或MOV0B8H,#05H;#05H=00000101B(b)用位操作指令SETBPX0SETBPX1CLRPSCLRPT0CLRPT125中斷源觸發(fā)方式中斷請求標(biāo)志位中斷允許中斷優(yōu)先級外部中斷0(INT0)IT0電平/邊沿IE0硬件置1,邊沿-硬件清0EX0PX0外部中斷1(INT1)IT1電平/邊沿IE1硬件置1,硬件清0EX1PX1定時器/計數(shù)器0(T0)無TF0硬件置1,硬件清0ET0PT0定時器/計數(shù)器1(T1)無TF1硬件置1,硬件清0ET1PT1串行口中斷TXD無TI硬件置1,軟件清0ESPSRXD無RI硬件置1,軟件清026中斷處理過程可分為三個階段,即中斷響應(yīng)、中斷處理和中斷返回。在中斷響應(yīng)時,首先應(yīng)在堆棧中保護主程序的斷點地址,以便中斷返回時,執(zhí)行RETI指令能將斷點地址從堆棧中彈出到PC,正確返回。由此可見,CPU執(zhí)行的中斷服務(wù)程序如同子程序一樣,因此又被稱作中斷服務(wù)子程序。但兩者的區(qū)別在于,子程序是用LCALL指令來調(diào)用的,而中斷服務(wù)子程序是通過中斷請求實現(xiàn)的。所以,在中斷服務(wù)子程序中也存在保護現(xiàn)場、恢復(fù)現(xiàn)場的問題。
5.4中斷處理過程
27圖5-10中斷處理的大致流程保護現(xiàn)場為外設(shè)服務(wù)恢復(fù)現(xiàn)場主程序NKN+mK+1返回中斷處理28
一、中斷響應(yīng)條件
CPU響應(yīng)中斷的條件有:
①
有中斷源發(fā)出中斷請求。
②
中斷總允許位EA=1,即CPU開中斷。
③
申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽。
④
無同級或更高級中斷正在被服務(wù)。
⑤
當(dāng)前的指令周期已經(jīng)結(jié)束。
⑥
若現(xiàn)行指令為RETI或者是訪問IE或IP指令時,該指令以及緊接著的另一條指令已經(jīng)執(zhí)行完。
5.4.1中斷響應(yīng)
29
二、中斷響應(yīng)操作過程(假設(shè)已使某中斷請求標(biāo)志置1)
(1)先使相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器置1;(2)執(zhí)行一個硬件子程序的調(diào)用(LCALL),1)硬件清零相應(yīng)中斷請求標(biāo)志(TI、RI除外)2)將當(dāng)前PC內(nèi)容壓入堆棧——保護斷點;3)將中斷服務(wù)子程序入口地址送PC——轉(zhuǎn)移。
30各中斷源與對應(yīng)的矢量地址中斷源中斷矢量外部中斷0(INT0)0003H定時器T0中斷000BH外部中斷1(INT1)0013H定時器T1中斷001BH串行口中斷0023H31三、中斷響應(yīng)時間若M1周期的S5P2前某中斷生效,在S5P2期間置位相應(yīng)的中斷標(biāo)志位;M2恰逢指令的最后一個機器周期,且該指令不是RETI或訪問IE、IP的指令,M2的S6查詢中斷標(biāo)志。于是,M3的S1開始中斷處理,M3和M4便可以執(zhí)行硬件LCALL指令,M5周期將進入了中斷服務(wù)程序。80C51的中斷響應(yīng)時間(從標(biāo)志置1到進入相應(yīng)的中斷服務(wù)),至少要3個完整的機器周期,只有一個中斷源時響應(yīng)時間3~8周期
3T:中斷請求標(biāo)志查詢:1T產(chǎn)生、執(zhí)行LCALL:2T8T:執(zhí)行RET/RETI(訪問IP/IE):2T主程序中MUL/DIV指令:4T執(zhí)行LCALL指令:2T321.定時器/計數(shù)器中斷請求的撤銷
定時器/計數(shù)器中斷請求被響應(yīng)后,硬件會自動把中斷請求標(biāo)志位(TF0或TF1)清0,所以定時器/計數(shù)器中斷請求是自動撤銷的。2.外部中斷請求的撤銷
(1)邊沿觸發(fā)方式外部中斷請求的撤銷包括中斷標(biāo)志位清0和外部中斷信號的撤銷。中斷標(biāo)志位(IE0或IE1)在中斷請求被響應(yīng)后,硬件會自動清0;外部中斷請求信號由于邊沿信號過后也就消失。所以邊沿觸發(fā)方式外部中斷請求是自動撤銷的。四、中斷請求的撤銷33包括中斷標(biāo)志位清0和外部中斷信號的撤銷。中斷標(biāo)志位(IE0或IE1)在中斷請求被響應(yīng)后,硬件會自動清0,所以外部中斷請求標(biāo)志位是自動撤銷的。但中斷請求信號可能繼續(xù)存在,在中斷服務(wù)之后,又會引起新的中斷??梢圆捎孟聢D解決。D觸發(fā)器的直接置位端SD:ORLP1,#01H;P1輸出高電平ANLP1,#0FEH;P1輸出低電平直接置位端(2)電平觸發(fā)方式外部中斷請求的撤銷34中斷標(biāo)志位(RI或TI)在中斷請求被響應(yīng)后,CPU無法知道是發(fā)送中斷還是接收中斷,還需要測試這兩個中斷標(biāo)志位的狀態(tài),以判定是發(fā)送還是接收中斷,所以串行口中斷請求只能使用軟件方式撤銷,即用指令清除串行口中斷標(biāo)志位。
CLRTICLTRI3.串行口中斷請求的撤銷35從中斷服務(wù)程序的第一條指令開始到返回指令為止,這個過程稱為中斷處理或中斷服務(wù)。中斷處理包括兩部分內(nèi)容:保護現(xiàn)場
現(xiàn)場通常有PSW、工作寄存器和SFR等。如果在中斷服務(wù)程序中要用這些寄存器,則在進入中斷服務(wù)之前應(yīng)將它們的內(nèi)容保護起來(保護現(xiàn)場),在中斷結(jié)束、執(zhí)行RETI指令前恢復(fù)現(xiàn)場。中斷源服務(wù)中斷服務(wù)針對中斷源的具體要求進行相應(yīng)的處理。
5.4.2中斷處理
36各中斷源的入口矢量地址之間只隔8個單元,一般的中斷服務(wù)程序是容納不下的,因而最常用的方法是在中斷入口地址單元處存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)至存儲器其他的任何空間。若在執(zhí)行當(dāng)前中斷程序時禁止更高優(yōu)先級中斷,應(yīng)用軟件關(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ù)后再開中斷。編寫中斷程序時應(yīng)注意:375.4.3中斷返回(RETI)(1)使相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器清0。(2)從堆棧中彈出棧頂?shù)膬蓚€字節(jié)內(nèi)容送PC——恢復(fù)斷點。(3)CPU接著中斷處繼續(xù)執(zhí)行原程序。
注意:不能用RET指令代替RETI指令。在中斷服務(wù)程序中PUSH指令與POP指令必須成對使用,否則不能正確返回斷點。38在實際應(yīng)用中,若外部中斷源有兩個以上時,就需要擴展外部中斷源。本章介紹兩種擴展外部中斷源的方法。5.5.1利用定時器擴展外部中斷源
89C51單片機有兩個定時器,都具有兩個內(nèi)部中斷標(biāo)志和外部計數(shù)輸入引腳。當(dāng)定時器設(shè)置為計數(shù)方式時,計數(shù)初值設(shè)置為滿量程FFH。一旦外部信號從計數(shù)器引腳輸入一個負跳變信號,計數(shù)器加1產(chǎn)生溢出中斷,從而可以轉(zhuǎn)去處理該外部中斷源的請求。因此,我們可以把外部中斷源作為邊沿觸發(fā)輸入信號,接至定時器的T0(P3.4)或T1(P3.5)引腳上;該定時器的溢出中斷標(biāo)志及中斷服務(wù)程序作為擴充外部中斷源的標(biāo)志和中斷服務(wù)程序。5.5外部中斷擴展方法
39在實際應(yīng)用中,若外部中斷源有兩個以上時,就需要擴展外部中斷源。介紹兩種擴展外部中斷源的方法。5.5.1利用定時器擴展外部中斷源
解:將定時器T0設(shè)定為方式2(自動恢復(fù)計數(shù)初值),TH0和TF0的初值均設(shè)置為FFH,允許T0中斷,CPU開放中斷MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#0FFH SETB TR0 SETB ET0 SETB EAT0引腳每輸入一個負跳變,TF0都會置1,向CPU請求中斷,T0腳相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。5.5外部中斷擴展方法
405.5.2中斷加查詢擴展中斷源
應(yīng)把INTx設(shè)置為電平觸發(fā)方式;在中斷服務(wù)程序中進行擴展中斷源的查詢;查詢順序就是擴展中斷源的優(yōu)先級順序。80C5141有關(guān)中斷服務(wù)程序的片斷如下:ORG0003HLJMPINTRP;中斷服務(wù)程序入口┇ORG0100HINTRP:CLREA PUSHPSW; PUSHASETBEAJBP1.0,DV1JBP1.1,DV2JBP1.2,DV3JBP1.3,DV4EXIT:POPAPOPPSWRETIDV1:…
裝置1的中斷服務(wù)程序AJMPEXTI
DV2:…裝置2的中斷服務(wù)程序AJMPEXTIDV3:…裝置3的中斷服務(wù)程序AJMPEXTIDV4:…裝置4的中斷服務(wù)程序AJMPEXTI
本程序是否有錯?42
5.6.1主程序
1.主程序的起始地址
89C51系列單片機復(fù)位后,(PC)=0000H,而0003H~002BH分別為各中斷源的入口地址。所以,編程時應(yīng)在0000H處寫一跳轉(zhuǎn)指令(一般為長條跳轉(zhuǎn)指令),使CPU在執(zhí)行程序時,從0000H跳過各中斷源的入口地址。主程序則是以跳轉(zhuǎn)的目標(biāo)地址作為起始地址開始編寫,一般從0030H開始。0000HLJMP00300030H主程序5.6中斷程序舉例43
2.主程序初始化內(nèi)容
所謂初始化,是對將要用到的89C51系列單片機內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設(shè)定。89C51系列單片機復(fù)位后,特殊功能寄存器IE,IP的內(nèi)容均為00H,所以應(yīng)對IE,IP進行初始化編程,以開放CPU中斷,允許某些中斷源中斷和設(shè)置中斷優(yōu)先級等。441、中斷服務(wù)程序的起始地址
當(dāng)CPU接收到中斷請求信號并予以響應(yīng)后,CPU把當(dāng)前的PC內(nèi)容壓入棧中進行保護,然后轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序入口處執(zhí)行。89C51系列單片機各中斷入口地址相距很近(僅8個字節(jié)),如果中斷服務(wù)程序的指令代碼少于8個字節(jié),則可從規(guī)定的中斷服務(wù)程序入口地址開始,直接編寫中斷服務(wù)程序;若中斷服務(wù)程序的指令代碼大于8個字節(jié),則應(yīng)在相應(yīng)的入口處寫一條跳轉(zhuǎn)指令,并以跳轉(zhuǎn)指令的目標(biāo)地址作為中斷服務(wù)程序的起始地址進行編程。5.6.2中斷服務(wù)程序
45
2.中斷服務(wù)程序編制中的注意事項
①視需要確定是否保護現(xiàn)場。②及時清除那些不能被硬件自動清除的中斷請求標(biāo)志,以免產(chǎn)生錯誤的中斷。③中斷服務(wù)程序中的壓棧(PUSH)與彈棧(POP)指令必須成對使用,以確保中斷服務(wù)程序的正確返回。④主程序和中斷服務(wù)程序之間的參數(shù)傳遞與主程序和子程序的參數(shù)傳遞方式相同。46例:設(shè)計中斷程序要求每次按動按鍵,使外接發(fā)光二極管LED改變一次亮滅狀態(tài)。解:1、跳變觸發(fā):每次跳變引起一次中斷請求。 ORG 0000H AJMPMAIN ORG 0003H;中斷入口 AJMP PINT0 ORG 0100H ;主程序MAIN:MOVSP,#40;設(shè)棧底 SETB EA ;開總允許開關(guān) SETB EX0 ;開INT0中斷 SETB IT0 ;負跳變觸發(fā)中斷H: SJMP H;執(zhí)行其它任務(wù) ORG 0200H;中斷服務(wù)程序PINT0:CPLP1.0 ;改變LED RETI ;返回主程序單片機INT0P1.01+5V47(1)軟件等待按鍵釋放(撤消低電平);(2)硬件清除中斷信號(標(biāo)志位)。 ORG 0000H;復(fù)位入口
AJMPMAIN ORG 0003H ;中斷入口
AJMP PINT0 ORG 0100H ;主程序MAIN:MOVSP,#40H;設(shè)棧底 SETB EA ;開總允許開關(guān) SETB EX0 ;開INT0中斷
CLR IT0 ;低電平觸發(fā)中斷H: SJMP H ;執(zhí)行其它任務(wù) ORG 0200H;中斷服務(wù)程序PINT0:CPLP1.0 ;改變LEDWAIT:JNB P3.2,WA;等按鍵釋放 RETI ;返回主程序單片機INT0P1.01+5V2、電平觸發(fā):可避免一次按鍵引起多次中斷響應(yīng)。48ORG 0000H ;復(fù)位地址LJMP STAT ;轉(zhuǎn)初始化ORG 0003H ;中斷入口地址LJMP INT ;轉(zhuǎn)中斷服務(wù)程序ORG0100H ;初始化程序首地址STAT:MOVSP,#60HSETBIT0 ;置邊沿觸發(fā)方式MOVIP,#01H ;置高優(yōu)先級MOVIE,#81H ;開中MOV30H,#0 ;里程計數(shù)器清0MOV31H,#0 ;MOV32H,#0 ;SJMP$ ;轉(zhuǎn)主程序ORG0200H ;中斷服務(wù)子程序首地址INT:PUSHAcc ;保護現(xiàn)場 PUSHPSW ; MOVA,30H ;讀低8位計數(shù)器 ADDA,#2 ;低8位計數(shù)器加2m MOV30H,A ;回存 CLRA ; ADDCA,31H ;中8位計數(shù)器加進位 MOV31H,A ;回存 CLRA ; ADDCA,32H ;高8位計數(shù)器加進位 MOV32H,A ;回存 PUSHPSW ;恢復(fù)現(xiàn)場 PUSHAcc ; RETI ;中斷返回【例】出租車計價器計程方法是車輪每運轉(zhuǎn)一圈產(chǎn)生一個負脈沖,從外中斷(P3.2)引腳輸入,行駛里程為輪胎周長×運轉(zhuǎn)圈數(shù),設(shè)輪胎周長為2m,試實時計算出租車行駛里程(單位米),數(shù)據(jù)存32H、31H、30H。49
例5-3:如圖5-12所示,將P1口的P1.4~P1.7作為輸入位,P1.0~P1.3作為輸出位。要求利用89C51將開關(guān)所設(shè)的數(shù)據(jù)讀入單片機內(nèi),并依次通過P1.0~P1.3輸出,驅(qū)動發(fā)光二極管,以檢查P1.4~P1.7輸入的電平情況(若輸入為高電平則相應(yīng)的LED亮)?,F(xiàn)要求采用中斷邊沿觸發(fā)方式,每中斷一次,完成一次讀/寫操作。
解:如圖所示,采用外部中斷0,中斷申請從INT0輸入,并采用了去抖動電路。當(dāng)P1.0~P1.3的任何一位輸出0時,相應(yīng)的發(fā)光二極管就會發(fā)光。當(dāng)開關(guān)S1來回撥動一次,將產(chǎn)生一個下降沿,發(fā)出中斷請求。中斷服務(wù)程序的矢量地址為0003H。50圖5-12外部中斷實驗51源程序如下:
ORG0000HAJMPMAIN;上電,轉(zhuǎn)向主程序ORG0003H;外部中斷0入口地址AJMPINSER;轉(zhuǎn)向中斷服務(wù)程序ORG0030H;主程序MAIN:SETBEX0;允許外部中斷0中斷SETBIT0;選擇邊沿觸發(fā)方式SETBEA;CPU開中斷HERE:SJMPHERE
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年春七年級語文下冊 第三單元 12 賣油翁說課稿 新人教版
- 12古詩三首《己亥雜詩》說課稿-2024-2025學(xué)年語文五年級上冊統(tǒng)編版
- 15 分享真快樂(說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治 一年級下冊001
- 2025裝修工程泥工承包合同
- 7讓弦發(fā)出高低不同的聲音 說課稿-2024-2025學(xué)年科學(xué)四年級上冊教科版
- 2024-2025學(xué)年高中歷史 專題四 王安石變法 一 積貧積弱的北宋教學(xué)說課稿 人民版選修1
- 14 請幫我一下吧 第一課時 說課稿-2023-2024學(xué)年道德與法治一年級下冊統(tǒng)編版
- 6我們神圣的國土 第1課時(說課稿)-部編版道德與法治五年級上冊
- 2023八年級英語下冊 Module 1 Feelings and impressions Unit 2 I feel nervous when I speak Chinese第三課時說課稿 (新版)外研版
- 2024-2025學(xué)年新教材高中語文 第二單元 6.2 文氏外孫入村收麥說課稿(3)部編版必修上冊
- 科技論文圖表等規(guī)范表達
- 高考寫作指導(dǎo)議論文標(biāo)準(zhǔn)語段寫作課件32張
- 2021年普通高等學(xué)校招生全國英語統(tǒng)一考試模擬演練八省聯(lián)考解析
- 華能火力發(fā)電機組節(jié)能降耗技術(shù)導(dǎo)則(2023年版)
- 基礎(chǔ)知識3500個常用漢字附拼音
- 企業(yè)易制毒化學(xué)品管理培訓(xùn)
- JJF(紡織)072-2018紡織滾筒式烘干機校準(zhǔn)規(guī)范
- 北京故宮作文600字
- 羊水栓塞的應(yīng)急預(yù)案演練腳本
- 物業(yè)保潔及餐飲服務(wù)項目方案
- (新版教材)粵教粵科版六年級下冊科學(xué)全冊課時練(同步練習(xí))
評論
0/150
提交評論