51單片機(jī)-中斷系統(tǒng)(部編)課件_第1頁(yè)
51單片機(jī)-中斷系統(tǒng)(部編)課件_第2頁(yè)
51單片機(jī)-中斷系統(tǒng)(部編)課件_第3頁(yè)
51單片機(jī)-中斷系統(tǒng)(部編)課件_第4頁(yè)
51單片機(jī)-中斷系統(tǒng)(部編)課件_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

第五章中斷系統(tǒng)內(nèi)容提要:§5-1微機(jī)的輸入/輸出方式§5-2中斷的概念§5-389C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制§5-4中斷處理過程§5-5外部中斷的擴(kuò)展方法§5-6中斷程序的舉例§5.1微機(jī)的輸入/輸出方式CPU與外部設(shè)備交換信息通常有以下幾種方式:①程序控制方式,又分為無條件傳送方式和查詢傳送方式。②中斷方式③直接儲(chǔ)存器存取(DMA)方式一、無條件傳送方式CPU總是認(rèn)為外設(shè)在任何時(shí)刻都處于“準(zhǔn)備好”的狀態(tài)。這種傳送方式不需要交換狀態(tài)信息,只需在程序中加入訪問外設(shè)的指令,數(shù)據(jù)傳送便可以實(shí)現(xiàn)。此種方法很少使用。

二、查詢傳送方式在輸入時(shí),需要查詢外設(shè)的輸入數(shù)據(jù)是否準(zhǔn)備好;在輸出時(shí),需要查詢外設(shè)是否把上一次CPU輸出的數(shù)據(jù)處理完畢。查詢傳送方式:通過查詢外設(shè)的狀態(tài)信息,確信外設(shè)已處于“準(zhǔn)備好”,計(jì)算機(jī)才發(fā)出訪問外設(shè)的指令,實(shí)現(xiàn)數(shù)據(jù)的傳送。狀態(tài)信息:一般為1位二進(jìn)制碼。查詢方式程序流程圖:

輸入狀態(tài)信息準(zhǔn)備好?傳送數(shù)據(jù)NY查詢方式的過程:

啟動(dòng)外設(shè)設(shè)備傳送數(shù)據(jù)延遲查詢-等待-數(shù)據(jù)傳送,待到下一次數(shù)據(jù)傳送時(shí)則重復(fù)上述過程。等待也可以不采用循環(huán)等待,而用軟件插入固定延時(shí)的方法來完成。查詢方式的特點(diǎn):優(yōu)點(diǎn):通用性好,可以用于各類外設(shè)和CPU間的數(shù)據(jù)傳送。缺點(diǎn):CPU在完成一次數(shù)據(jù)傳送后要等待很長(zhǎng)時(shí)間才能進(jìn)行下一次的傳送。在等待過程中,CPU不能進(jìn)行其他操作,所以效率比較低。

DMA(DirectMemoryAccess)方式是CPU讓出數(shù)據(jù)總線,使外部設(shè)備和存儲(chǔ)器之間直接傳送(不通過CPU)數(shù)據(jù)的方式。在下述兩種情況時(shí)可考慮采用DMA方式:①外設(shè)和存儲(chǔ)器之間有大量的數(shù)據(jù)需要傳送;②外部設(shè)備的工作速度很快的情況。三、直接存儲(chǔ)器存取(DMA)方式§5.2中斷的概念一、概述與上對(duì)比,單片機(jī)中也有同樣的問題。CPU正在執(zhí)行原程序,突然,被意外事情打斷,轉(zhuǎn)去執(zhí)行新程序。CPU執(zhí)行新程序結(jié)束后,又回到原程序中繼續(xù)執(zhí)行。這樣的過程就叫。中斷

什么叫中斷?舉例:某同學(xué)正在教室寫作業(yè),忽然被人叫出去,回來后,繼續(xù)寫作業(yè)。這就是生活中中斷的例子。主程序響應(yīng)中斷請(qǐng)求中斷服務(wù)程序返回主程序繼續(xù)執(zhí)行主程序斷點(diǎn)中斷系統(tǒng):實(shí)現(xiàn)這種功能的部件中斷源:產(chǎn)生中斷的請(qǐng)求源中斷請(qǐng)求:中斷源向CPU提出的處理請(qǐng)求CPU的中斷響應(yīng)過程:CPU暫時(shí)中止自身的事務(wù),轉(zhuǎn)去處理事件的過程中斷服務(wù):對(duì)事件的整個(gè)處理過程中斷返回:處理完畢,再回到原來被中止的地方日常生活中的中斷與單片機(jī)中斷的比較:

某同學(xué)

單片機(jī)過程說明正在看書 執(zhí)行主程序有人找出去 中斷信號(hào)

中斷請(qǐng)求暫??磿?/p>

暫停執(zhí)行主程序

中斷響應(yīng)書中作記號(hào)當(dāng)前PC入棧

保護(hù)斷點(diǎn)出去做事 執(zhí)行中斷程序

中斷服務(wù)回來繼續(xù)看 返回主程序

中斷返回二、中斷的作用1、分時(shí)操作2、實(shí)時(shí)處理3、故障處理分時(shí)操作:計(jì)算機(jī)的中斷系統(tǒng)可以使CPU與外設(shè)同時(shí)工作。CPU在啟動(dòng)外設(shè)后,便繼續(xù)執(zhí)行主程序;而外設(shè)被啟動(dòng)后,開始進(jìn)行準(zhǔn)備工作。當(dāng)外設(shè)準(zhǔn)備就緒時(shí),就向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)該中斷請(qǐng)求并為其服務(wù)完畢后,返回原來的斷點(diǎn)處繼續(xù)運(yùn)行主程序。外設(shè)在得到服務(wù)后,也繼續(xù)進(jìn)行自己的工作。因此,CPU可以使多個(gè)外設(shè)同時(shí)工作,并分時(shí)為各外設(shè)提供服務(wù),從而提高了CPU的利用率和輸入輸出的速度。實(shí)時(shí)處理:當(dāng)計(jì)算機(jī)用于實(shí)時(shí)控制時(shí),請(qǐng)求CPU提供服務(wù)時(shí)隨機(jī)發(fā)生的。有了中斷系統(tǒng),CPU就可以立即響應(yīng)并加以處理。故障處理:計(jì)算機(jī)在運(yùn)行時(shí)往往會(huì)出現(xiàn)一些故障,如斷電、存儲(chǔ)器奇偶校驗(yàn)出錯(cuò)、運(yùn)算溢出等。有了中斷系統(tǒng),當(dāng)出現(xiàn)上述情況時(shí),CPU可及時(shí)轉(zhuǎn)去執(zhí)行故障處理程序,自行處理故障而不必停機(jī)?!?.389C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制89C51中斷系統(tǒng)的五個(gè)中斷源(結(jié)構(gòu)如圖5-3)①INT0-外部中斷0請(qǐng)求,低電平有效,通過P3.2引腳輸入②INT1-外部中斷1請(qǐng)求,低電平有效,通過P3.3引腳輸入③T0-定時(shí)器/計(jì)算器0溢出中斷請(qǐng)求④T1-定時(shí)器/計(jì)算器0溢出中斷請(qǐng)求⑤TX/RX-串行口中斷請(qǐng)求一、89C51中斷源中斷系統(tǒng)中斷源:I/O設(shè)備鍵盤、打印機(jī)、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器完成自身的操作后向CPU申請(qǐng)中斷,請(qǐng)求服務(wù)硬件故障電源斷電時(shí),需要將寄存器、累加器、標(biāo)志位保存,以便重新供電后繼續(xù)運(yùn)行RAM存儲(chǔ)器斷電時(shí)將內(nèi)容保存在如硬盤、FLASHROM中,以便供電恢復(fù)后繼續(xù)工作實(shí)時(shí)時(shí)鐘系統(tǒng)中的時(shí)鐘可以采用獨(dú)立時(shí)鐘系統(tǒng),通過中斷向CPU提供時(shí)鐘源,節(jié)省CPU的處理時(shí)間調(diào)試程序時(shí)設(shè)置的中斷程序調(diào)試時(shí),通過設(shè)置斷點(diǎn)觀察運(yùn)行中的寄存器、累加器、標(biāo)志位狀態(tài);觀察中間運(yùn)算結(jié)果上頁(yè)下頁(yè)源允許圖6-19中斷系統(tǒng)總體邏輯結(jié)構(gòu)總允許優(yōu)先級(jí)自然優(yōu)先級(jí)中斷源自然優(yōu)先級(jí)中斷源查詢硬件查詢硬件低級(jí)中斷請(qǐng)求送CPU矢量地址送PCIPIETCON

SCONEX0ET0EX1ET1ESEAINT0INT1T0T1RXTXRITIIE0IE1TF0TF1

IT1

011010101010矢量地址送PC高級(jí)中斷請(qǐng)求送CPUIT0

01中斷標(biāo)志中斷標(biāo)志INT01IE0自然優(yōu)先級(jí)矢量地址送PC“+1”TF10自然優(yōu)先級(jí)矢量地址送PCEA“+1”“+1”EX0ET11P3.2P3.3P3.4P3.5二、中斷控制89C51中斷系統(tǒng)有以下四個(gè)特殊功能寄存器:①定時(shí)器控制寄存器TCON(用六位)②串行口控制寄存器SCON(用二位)③中斷允許寄存器IE④中斷優(yōu)先級(jí)寄存器IP1、中斷請(qǐng)求標(biāo)志中斷系統(tǒng)1)、定時(shí)/計(jì)數(shù)器控制寄存器TCON

TCON(88H)TF1

TF0

IE1

IT1

IE0IT0

INT1

INT0觸發(fā)方式控制位0

低電平觸發(fā)1

邊沿↓觸發(fā)

INT1

INT0外部中斷請(qǐng)求標(biāo)志1有有效觸發(fā)時(shí)0

當(dāng)CPU響應(yīng)中斷時(shí)T1T0溢出標(biāo)志1

計(jì)數(shù)器“+1”有溢出時(shí),并向CPU請(qǐng)求中斷0

當(dāng)CPU響應(yīng)中斷時(shí),也可由指令清除TR1TR0由硬件自動(dòng)由硬件自動(dòng)上頁(yè)下頁(yè)中斷請(qǐng)求標(biāo)志可編程控制位TR1TR0由硬件自動(dòng)由硬件自動(dòng)在每個(gè)機(jī)器周期S5P2都采樣引腳P3.3P3.2引腳00記錄有無中斷記錄有無中斷中斷系統(tǒng)2)、串行口控制寄存器SCONTI:串行口發(fā)送中斷標(biāo)志在方式0,串行發(fā)送到第8位結(jié)束時(shí),由硬件置“1”;或在其他方式中,串行發(fā)送到停止位的開始時(shí),由硬件置“1”,RI:串行口接收中斷標(biāo)志上頁(yè)下頁(yè)在方式0,串行接收到第8位結(jié)束時(shí),由硬件置“1”;或在其他方式中,串行接收到停止位的開始時(shí),由硬件置“1”,“1”發(fā)送完一幀數(shù)據(jù)后“1”接收完一幀數(shù)據(jù)后必須由軟件清“0”必須由軟件清“0”

SCON(98H)

TIRI中斷系統(tǒng)2、中斷允許控制在中斷源與CPU之間有二級(jí)中斷允許控制邏輯電路,類似開關(guān),其中第一級(jí)為一個(gè)總開關(guān),第二級(jí)為五個(gè)分開關(guān),由IE控制。應(yīng)當(dāng)指出:在89C51復(fù)位時(shí),IE各位被復(fù)位成“0”狀態(tài),CPU因此而處于關(guān)閉所有中斷狀態(tài)。所以,在89C51復(fù)位以后,用戶必須通過主程序中的指令來開放所需中斷,以便相應(yīng)中斷請(qǐng)求來到時(shí)被CPU所響應(yīng)。

中斷系統(tǒng)中斷允許寄存器IE

EA/

/

ES

ET1

EX1

ET0

EX0INT0INT1T1T0UARTCPU0

禁止1

允許0

禁止1

允許總中斷總中斷中斷中斷IE(A8)中斷的開放和禁止是可控,可編程的ET2T2CPUIE的相應(yīng)位被置“0”

或“1”

該相應(yīng)中斷即被“禁止”或“開放”上頁(yè)下頁(yè)中斷系統(tǒng)3、中斷優(yōu)先級(jí)控制CPU同一時(shí)間只能響應(yīng)一個(gè)中斷請(qǐng)求。若同時(shí)來了兩個(gè)或兩個(gè)以上中斷請(qǐng)求,就必須有先有后。!?。榇藢?個(gè)中斷源分成高級(jí)、低級(jí)兩個(gè)級(jí)別,高級(jí)優(yōu)先,由IP控制。中斷系統(tǒng)1)、中斷優(yōu)先級(jí)寄存器IP

//

/

PS

PT1

PX1

PT0

PX0IP(B8)ET2INT0INT1T1T0UART0

低級(jí)1高級(jí)中斷中斷T2中斷優(yōu)先級(jí)是可控,可編程的上頁(yè)下頁(yè)2)、優(yōu)先級(jí)結(jié)構(gòu)中斷優(yōu)先級(jí)控制遵循的兩個(gè)基本原則:⑴一個(gè)正在執(zhí)行的低級(jí)中斷服務(wù)程序,能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷,但不能被同優(yōu)先級(jí)中斷請(qǐng)求所中斷。⑵一個(gè)正在執(zhí)行的高級(jí)中斷服務(wù)程序,不能被任何中斷請(qǐng)求所中斷,直到返回。中斷系統(tǒng)實(shí)現(xiàn)這兩個(gè)原則的方法:上頁(yè)下頁(yè)中斷系統(tǒng)內(nèi)部設(shè)置了兩個(gè)不可尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。一個(gè)指出正在處理的是:高優(yōu)先級(jí)中斷,并阻止所有其他中斷;另一個(gè)指出正在處理的是:低優(yōu)先級(jí)中斷,并阻止了除高優(yōu)先級(jí)中斷外的其他任何中斷。高優(yōu)先級(jí)狀態(tài)觸發(fā)器低優(yōu)先級(jí)狀態(tài)觸發(fā)器是不可尋址的當(dāng)CPU響應(yīng)高級(jí)中斷,并進(jìn)入中斷服務(wù)時(shí)“1”“1”RETI“0”當(dāng)CPU響應(yīng)低級(jí)中斷,并進(jìn)入中斷服務(wù)時(shí)“1”RETI“0”

在同級(jí)的幾個(gè)中斷源中同時(shí)發(fā)生請(qǐng)求時(shí),內(nèi)部對(duì)同級(jí)的各中斷源的優(yōu)先級(jí)別有一個(gè)規(guī)定的查詢順序:外部中斷請(qǐng)求

INT0定時(shí)/計(jì)數(shù)器T0定時(shí)/計(jì)數(shù)器T1串行口UART定時(shí)/計(jì)數(shù)器T2外部中斷請(qǐng)求

INT1最高最低上頁(yè)下頁(yè)自然優(yōu)先級(jí)自然優(yōu)先級(jí)出廠前已由廠家固化順序——事先約定中斷優(yōu)先原則:(概括為四句話)1、低級(jí)不打斷高級(jí)2、高級(jí)不睬低級(jí)3、同級(jí)不能打斷4、同級(jí)、同時(shí)中斷,事先約定。CPU在執(zhí)行主程序低級(jí)中斷請(qǐng)求響應(yīng)低級(jí)中斷請(qǐng)求CPU執(zhí)行低級(jí)中斷服務(wù)程序高級(jí)中斷請(qǐng)求響應(yīng)高級(jí)中斷請(qǐng)求CPU執(zhí)行高級(jí)中斷服務(wù)程序返回低級(jí)中斷程序返回主程序二級(jí)中斷嵌套的中斷運(yùn)行過程例:設(shè)89C51的片外中斷為高優(yōu)先級(jí),片內(nèi)中斷為低優(yōu)先級(jí)。試設(shè)置IP相應(yīng)值。(a)用字節(jié)操作指令

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

SETBPX0SETBPX1CLRPSCLRPT0CLRPT1IP§5.4中斷響應(yīng)及中斷處理過程中斷處理過程可分為三個(gè)階段:①中斷響應(yīng)②中斷處理③中斷返回以外設(shè)提出接收數(shù)據(jù)為例,如右圖:保護(hù)現(xiàn)場(chǎng)為外設(shè)服務(wù)恢復(fù)現(xiàn)場(chǎng)主程序KK+1NN+m返回中斷處理一、中斷響應(yīng)1、中斷響應(yīng)條件:①有中斷源發(fā)出中斷請(qǐng)求;②中斷總允許位EA=1,即CPU開中斷;③申請(qǐng)中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽;④無同級(jí)或更高級(jí)中斷正在被服務(wù);⑤當(dāng)前的指令周期已經(jīng)結(jié)束;⑥若現(xiàn)行指令為RETI或者是訪問IE或IP指令時(shí),該指令以及緊接著的另一條指令已經(jīng)執(zhí)行完。中斷系統(tǒng)2、中斷響應(yīng)的過程

89C51的CPU在每個(gè)機(jī)器周期的S5P2期間順序采樣每個(gè)中斷源,CPU在下一個(gè)機(jī)器S6期間按優(yōu)先級(jí)順序查詢中斷標(biāo)志,如查詢到某個(gè)中斷標(biāo)志為1,將在接下來的機(jī)器周期S1期間按優(yōu)先級(jí)進(jìn)行中斷處理。中斷系統(tǒng)通過硬件自動(dòng)將相應(yīng)的中斷矢量地址裝入PC,以便進(jìn)入相應(yīng)的中斷服務(wù)程序。TCON中斷系統(tǒng)

89C51單片機(jī)的中斷系統(tǒng)中有兩個(gè)不可編程的“優(yōu)先級(jí)”觸發(fā)器:一個(gè)是“高優(yōu)先級(jí)生效”觸發(fā)器;一個(gè)是“低優(yōu)先級(jí)生效”觸發(fā)器。

89C51單片機(jī)一旦響應(yīng)中斷,首先置位相應(yīng)的中斷“優(yōu)先級(jí)生效”觸發(fā)器,然后由硬件執(zhí)行一條長(zhǎng)調(diào)用指令LCALL,把當(dāng)前PC值壓入堆棧,以保護(hù)斷點(diǎn),再將相應(yīng)的中斷服務(wù)程序的入口地址送入PC,于是CPU接著從中斷服務(wù)程序的入口開始執(zhí)行。中斷過程五個(gè)中斷源:入口地址外部中斷0(/INT0)0003HT0溢出中斷000BH

外部中斷1(/INT1)0013HT1溢出中斷001BH

串口中斷0023H各中斷源及與之對(duì)應(yīng)的矢量地址如下:中斷系統(tǒng)編寫中斷服務(wù)程序時(shí)應(yīng)注意:①在中斷矢量地址單元處放一條無條件轉(zhuǎn)移指令(如LJMPXXXXH),使中斷服務(wù)程序可靈活地安排在64KB程序存儲(chǔ)器的任何空間。②在中斷服務(wù)程序中,用戶應(yīng)注意用軟件保護(hù)現(xiàn)場(chǎng),以免中斷返回后丟失原寄存器、累加器中的信息。③若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級(jí)中斷,可以先用軟件關(guān)閉CPU中斷或禁止某中斷源中斷,在中斷返回前再開放中斷。3、對(duì)中斷請(qǐng)求的撤銷1)定時(shí)器溢出中斷請(qǐng)求的撤除

2)串行口中斷請(qǐng)求的撤除

TI和RI是串行口中斷的標(biāo)志位,中斷系統(tǒng)不能自動(dòng)將它們撤除,這是因?yàn)?9C51進(jìn)入串行口中斷服務(wù)程序后常需要對(duì)它們進(jìn)行檢測(cè),以測(cè)定串行口發(fā)生了接收中斷還是發(fā)送中斷。為了防止CPU再次響應(yīng)這類中斷,用戶應(yīng)在中斷服務(wù)程序的適當(dāng)位置處通過如下指令將它們撤除。

CLRTI;撤除發(fā)送中斷CLRRI;撤除接收中斷

3)外部中斷請(qǐng)求的撤除

外部中斷請(qǐng)求有兩種觸發(fā)方式:電平觸發(fā)和邊沿觸發(fā)。①邊沿觸發(fā)方式中斷請(qǐng)求的撤除②電平觸發(fā)方式中斷請(qǐng)求的撤除

在電平觸發(fā)方式下,外部中斷標(biāo)志IE0或IE1是依靠CPU檢測(cè)INT0或INT1上的低電平而置位的。盡管CPU響應(yīng)中斷時(shí)相應(yīng)中斷標(biāo)志IE0或IE1能自動(dòng)復(fù)位成“0”狀態(tài),但若外部中斷源不能及時(shí)撤除它在INT0或INT1上的低電平,就會(huì)再次使已經(jīng)變“0”的中斷標(biāo)志IE0或IE1置位,這是絕對(duì)不能允許的。因此,電平觸發(fā)方式外部中斷請(qǐng)求的撤除必須使INT0或INT1上的低電平隨著其中斷被CPU響應(yīng)而變?yōu)楦唠娖健?、中斷響應(yīng)時(shí)間

在實(shí)時(shí)控制系統(tǒng)中。為了滿足控制速度要求,常要弄清CPU響應(yīng)中斷所需的時(shí)間。中斷響應(yīng)時(shí)間:中斷請(qǐng)求有效(標(biāo)志位置“1”)到轉(zhuǎn)向中斷入口地址所需的機(jī)器周期數(shù)。響應(yīng)中斷的時(shí)間有最短和最長(zhǎng)之分:(1)最短需要3個(gè)機(jī)器周期M1M3M4M5M2S5P1S5P2INTi被采樣并鎖存到IE0IE1中CPU進(jìn)行中斷查詢保護(hù)斷點(diǎn),長(zhǎng)調(diào)用至入口中斷服務(wù)即滿足上述中斷響應(yīng)條件(2)最長(zhǎng)需要8個(gè)周期若CPU在執(zhí)行RETI(或訪問IE/IP)指令的第一個(gè)機(jī)器周期中查詢到有了某中斷源的中斷請(qǐng)求(設(shè)該中斷源的中斷是開放的),則89C51需要再執(zhí)行一條指令才會(huì)響應(yīng)這個(gè)中斷請(qǐng)求。在這種情況下,CPU響應(yīng)中斷的時(shí)間最長(zhǎng),共需8個(gè)機(jī)器周期。二、中斷處理CPU響應(yīng)中斷后即轉(zhuǎn)至中斷服務(wù)程序入口,執(zhí)行中斷服務(wù)程序。從中斷服務(wù)程序的第一條指令開始到返回指令為止,這個(gè)過程稱為中斷處理或中斷服務(wù)。不同的中斷源服務(wù)的內(nèi)容及要求各不相同,其處理過程也就有所區(qū)別。一般情況下,中斷處理包括兩部分內(nèi)容:一是保護(hù)現(xiàn)場(chǎng)。二是為中斷源服務(wù)。三、中斷返回(1)使相應(yīng)優(yōu)先級(jí)狀態(tài)觸發(fā)器清0。(2)從堆棧中彈出棧頂?shù)膬蓚€(gè)字節(jié)內(nèi)容送PC——恢復(fù)斷點(diǎn)。(3)CPU接著中斷處繼續(xù)執(zhí)行原程序。恢復(fù)現(xiàn)場(chǎng)在中斷服務(wù)程序中,最后一條指令必須為中斷返回指令RETICPU執(zhí)行該指令時(shí),一方面清除中斷響應(yīng)時(shí)所置位的“優(yōu)先級(jí)生效”觸發(fā)器,另一方面從當(dāng)前棧頂彈出斷點(diǎn)地址送入程序計(jì)數(shù)器PC,從而返回主程序中斷處理中推入堆棧的寄存器、累加器、標(biāo)志位需要在執(zhí)行返回指令RETI之前用軟件從堆?;謴?fù),采用POP指令注意在中斷服務(wù)程序中,PUSH和POP指令必須成對(duì)使用,否則,不能正確返回?cái)帱c(diǎn)恢復(fù)現(xiàn)場(chǎng)期間,為了防止更高優(yōu)先級(jí)中斷破壞現(xiàn)場(chǎng)內(nèi)容,需要關(guān)閉中斷允許位EAP1.0P1.1P1.2P1.3INT0+5V89C51INT1裝置1裝置2裝置3裝置4圖5-11多個(gè)外部中斷源連接法二、中斷加查詢擴(kuò)展中斷源

利用89C51的兩根外部中斷輸入線。每一中斷輸入線可以通過“線或”的關(guān)系連接多個(gè)外部中斷源,同時(shí)利用輸入端口線作為各中斷源的識(shí)別線。具體線路見圖5-11所示的多個(gè)外部中斷源連接方法。§5.5外部中斷擴(kuò)展方法一、利用定時(shí)器擴(kuò)展外部中斷源有關(guān)中斷服務(wù)程序的片斷如下:

ORG0003HLJMPINTRP…INTRP:PUSHPSWPUSHAJBP1.0,DV1JBP1.1,DV2JBP1.2,DV3JBP1.3,DV4EXIT:POPAPOPPSWRETIDV1:…裝置1的中斷服務(wù)程序AJMPEXITDV2:…裝置2的中斷服務(wù)程序AJMPEXITDV3:…裝置3的中斷服務(wù)程序AJMPEXITDV4:…裝置4的中斷服務(wù)程序AJMPEXIT一、主程序1.主程序的起始地址89C51系列單片機(jī)復(fù)位后,(PC)=0000H0003H~002BH分別為各中斷源的入口地址編程時(shí)應(yīng)在0000H處寫一條跳轉(zhuǎn)指令(一般為長(zhǎng)跳轉(zhuǎn)指令),主程序是以跳轉(zhuǎn)的目標(biāo)地址作為起始地址開始編寫,一般從0030H開始,如圖所示0000HLJMP00300030H主程序§5.6中斷程序舉例矢量地址2、主程序的初始化內(nèi)容初始化將用到的內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定。特殊功能寄存器初始化設(shè)置單片機(jī)復(fù)位后,特殊功能寄存器IE、IP內(nèi)容均為00H,所以應(yīng)對(duì)IE、IP進(jìn)行初始化編程,以開放中斷,允許某些中斷源中斷和設(shè)置中斷優(yōu)先級(jí)等。中斷系統(tǒng)二、中斷服務(wù)程序1.中斷服務(wù)程序的起始地址中斷系統(tǒng)對(duì)五個(gè)中斷源分別規(guī)定了各自的入口地址,但這些入口地址相距很近(8個(gè)字節(jié))如中斷服務(wù)程序的指令代碼少于8個(gè)字節(jié),則可從規(guī)定的中斷服務(wù)程序入口地址開始,直接編寫中斷服務(wù)程序如中斷服務(wù)程序的指令代碼大于8個(gè)字節(jié),則應(yīng)采用與主程序相同的方法,在相應(yīng)的入口處寫一條跳轉(zhuǎn)指令,并以跳轉(zhuǎn)指令的目標(biāo)地址作為中斷服務(wù)程序的起始地址進(jìn)行編程矢量地址2、中斷服務(wù)程序編制中的注意事項(xiàng)(1)視需要確定是否保護(hù)現(xiàn)場(chǎng);(2)及時(shí)清除那些不能被硬件自動(dòng)清除的中斷請(qǐng)求標(biāo)志,以免產(chǎn)生錯(cuò)誤的中斷;(3)中斷服務(wù)程序中的壓棧(PUSH)與出棧(POP)指令必須成對(duì)使用,以確保中斷服務(wù)程序的正確返回;(4)主程序和中斷服務(wù)程序之間的參數(shù)傳遞與主程序和子程序的參數(shù)傳遞方式相同。例:如圖所示,將P1口的P1.4~P1.7作為輸入位,P1.0~P1.3作為輸出位。要求利用89C51將開關(guān)所設(shè)的數(shù)據(jù)讀入單片機(jī)內(nèi),并依次通過P1.0~P1.3輸出,驅(qū)動(dòng)發(fā)光二極管,以檢查P1.4~P1.7輸入的電平情況(若輸入為高電平則相應(yīng)的LED亮)?,F(xiàn)要求采用中斷邊沿觸發(fā)方式,每中斷一次,完成一次讀/寫操作。源程序:

ORG0000HAJMPMAINORG0003HAJMPINSERORG0030HMAIN:SETBEX0SETBIT0SETBEAHERE:SJMPHERE

中斷服務(wù)子程序:

ORG0200HINSER:MOVA,#0F0HMOVP1,AMOVA,P1SWAPAMOVP1,ARETIEND中斷請(qǐng)求(外部中斷源)電平型外部中斷的撤除電路源程序:

ORG0000HAJMPMAINORG0003HAJMPINSERORG0030HMAIN:SETBP3.0SETBEX0CLRIT0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論