第4章 AT89S51單片機的中斷系統(tǒng)_第1頁
第4章 AT89S51單片機的中斷系統(tǒng)_第2頁
第4章 AT89S51單片機的中斷系統(tǒng)_第3頁
第4章 AT89S51單片機的中斷系統(tǒng)_第4頁
第4章 AT89S51單片機的中斷系統(tǒng)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第第4章章 AT89S51單片機的中斷系統(tǒng)單片機的中斷系統(tǒng)12內(nèi)容概要內(nèi)容概要u介紹片內(nèi)功能部件介紹片內(nèi)功能部件中斷系統(tǒng)中斷系統(tǒng)的的硬件結(jié)構(gòu)硬件結(jié)構(gòu)和和工作原理工作原理。u掌握與中斷系統(tǒng)掌握與中斷系統(tǒng)有關(guān)的特殊功能寄存器有關(guān)的特殊功能寄存器以及中斷系以及中斷系統(tǒng)的應(yīng)用特性。統(tǒng)的應(yīng)用特性。u應(yīng)能熟練地進行中斷系統(tǒng)的應(yīng)能熟練地進行中斷系統(tǒng)的初始化編程初始化編程以及以及中斷服中斷服務(wù)子程序的設(shè)計務(wù)子程序的設(shè)計。34.1 AT89S51中斷技術(shù)概述中斷技術(shù)概述 中斷技術(shù)主要用于中斷技術(shù)主要用于實時監(jiān)測與控制,實時監(jiān)測與控制,要求單片機能要求單片機能及時及時地地響應(yīng)中斷請求源響應(yīng)中斷請求源提出的服務(wù)提

2、出的服務(wù)請求請求,并作出快速響并作出快速響應(yīng)、及時處理。這是由片內(nèi)的中斷系統(tǒng)來實現(xiàn)的。應(yīng)、及時處理。這是由片內(nèi)的中斷系統(tǒng)來實現(xiàn)的。 當(dāng)中斷請求源當(dāng)中斷請求源發(fā)出中斷請求發(fā)出中斷請求時,如果中斷請求被允時,如果中斷請求被允許,單片機暫時中止當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)到中斷許,單片機暫時中止當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)到中斷服務(wù)處理程序處理中斷服務(wù)請求。服務(wù)處理程序處理中斷服務(wù)請求。 34 中斷服務(wù)處理程序處理完中斷服務(wù)請求后,中斷服務(wù)處理程序處理完中斷服務(wù)請求后,再回到原來被中止的程序之處(斷點),繼續(xù)再回到原來被中止的程序之處(斷點),繼續(xù)執(zhí)行被中斷的主程序。執(zhí)行被中斷的主程序。 圖圖4-1為整個中

3、斷響應(yīng)和處理過程。為整個中斷響應(yīng)和處理過程。5 5圖圖4-1 中斷響應(yīng)和處理過程中斷響應(yīng)和處理過程主程序主程序斷點斷點入入口口地地址址中斷服務(wù)程序中斷服務(wù)程序7 如果單片機沒有中斷系統(tǒng)如果單片機沒有中斷系統(tǒng),單片機的大量時單片機的大量時間可能會間可能會浪費在查詢是否有服務(wù)請求浪費在查詢是否有服務(wù)請求發(fā)生的定時發(fā)生的定時查詢操作上。查詢操作上。 采用中斷技術(shù)完全采用中斷技術(shù)完全消除了單片機在查詢方式消除了單片機在查詢方式中的等待現(xiàn)象中的等待現(xiàn)象,大大地大大地提高了提高了單片機的單片機的工作效率工作效率和和實時性實時性。784.2 AT89S51中斷系統(tǒng)結(jié)構(gòu)中斷系統(tǒng)結(jié)構(gòu) 中斷系統(tǒng)結(jié)構(gòu)圖如圖中斷系統(tǒng)

4、結(jié)構(gòu)圖如圖4-2所示。所示。 中斷系統(tǒng)有中斷系統(tǒng)有5個個中斷請求源中斷請求源(簡稱中斷源),(簡稱中斷源),2個中斷優(yōu)先級,個中斷優(yōu)先級,可實現(xiàn)可實現(xiàn)兩級兩級中斷服務(wù)程序中斷服務(wù)程序嵌套嵌套。 每一中斷源可用軟件獨立控制為每一中斷源可用軟件獨立控制為允許中斷允許中斷或或關(guān)中斷關(guān)中斷狀態(tài),狀態(tài),中斷優(yōu)先級中斷優(yōu)先級均可用軟件來設(shè)置。均可用軟件來設(shè)置。 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級自然優(yōu)先級矢量矢量地址地址高級中斷請求高級中斷請求自然優(yōu)先級自然優(yōu)先級矢

5、量矢量地址地址低級中斷請求低級中斷請求PX0PT0PX1PT1PSIEIP中斷標中斷標志位志位中斷源中斷源允許允許總允許總允許中斷中斷優(yōu)先優(yōu)先級級圖圖4-2 AT89S51的中斷系統(tǒng)結(jié)構(gòu)示意圖的中斷系統(tǒng)結(jié)構(gòu)示意圖104.2.1 中斷請求源中斷請求源 由圖由圖4-2可見,可見,AT89S51中斷系統(tǒng)共有中斷系統(tǒng)共有5個中斷請個中斷請求源:求源:(1)INT0*外部中斷請求外部中斷請求0,中斷請求信號,中斷請求信號由由INT0* 引腳輸入,引腳輸入,中斷請求標志為中斷請求標志為IE0。(2)INT1*外部中斷請求外部中斷請求1,中斷請求信號,中斷請求信號由由INT1*引腳輸入,引腳輸入,中斷請求標

6、志為中斷請求標志為IE1。1011(3)定時器定時器/計數(shù)器計數(shù)器T0計數(shù)溢出發(fā)出的中斷請計數(shù)溢出發(fā)出的中斷請求,中斷請求標志為求,中斷請求標志為TF0。(4)定時器定時器/計數(shù)器計數(shù)器T1計數(shù)溢出發(fā)出的中斷請計數(shù)溢出發(fā)出的中斷請求,中斷請求標志為求,中斷請求標志為TF1。(5)串行口串行口中斷請求,中斷請求標志為發(fā)送中中斷請求,中斷請求標志為發(fā)送中斷斷TI或接收中斷或接收中斷RI。124.2.2 中斷請求標志寄存器中斷請求標志寄存器 中斷源是否有中斷請求,是由中斷請求標志來中斷源是否有中斷請求,是由中斷請求標志來表示的。表示的。5個中斷請求源的個中斷請求源的中斷請求標志中斷請求標志分別由分別

7、由TCON和和SCON的相應(yīng)位鎖存(見圖的相應(yīng)位鎖存(見圖4-2)。)。 12131. TCON寄存器寄存器為為定時器定時器/計數(shù)器計數(shù)器的的控制寄存器,控制寄存器,字節(jié)地址為字節(jié)地址為88H,可可位尋址。位尋址。特殊功能寄存器特殊功能寄存器TCON的格式如圖的格式如圖4-3所示。所示。圖圖4-3 特殊功能寄存器特殊功能寄存器TCON的格式的格式14TCON各標志位功能如下:各標志位功能如下:(1)TF1定時器定時器/計數(shù)器計數(shù)器T1的溢出的溢出中斷請求標志位。中斷請求標志位。當(dāng)當(dāng)T1計數(shù)產(chǎn)生溢出時,由計數(shù)產(chǎn)生溢出時,由硬件使硬件使TF1置置“1”,向向CPU申請中斷。申請中斷。CPU響應(yīng)響應(yīng)

8、TF1中斷時,中斷時,TF1標志標志由硬由硬件自動清件自動清“0”,TF1也可由軟件清也可由軟件清“0”。(2)TF0定時器定時器/計數(shù)器計數(shù)器T0的溢出的溢出中斷請求標志位,中斷請求標志位,功能與功能與TF1類似。類似。1415(3)IE1外部中斷請求外部中斷請求1的的中斷請求標志位。中斷請求標志位。(4)IE0外部中斷請求外部中斷請求0的的中斷請求標志位,中斷請求標志位,功能與功能與IE1類似。類似。(5)IT1選擇外部中斷請求選擇外部中斷請求1為為跳沿觸發(fā)跳沿觸發(fā)還是還是電平觸發(fā)。電平觸發(fā)。 IT1=0,電平觸發(fā),電平觸發(fā)方式,引腳方式,引腳 上上低電平有效,低電平有效,并把并把IE1置

9、置“1”。轉(zhuǎn)向中斷服務(wù)程序時,由。轉(zhuǎn)向中斷服務(wù)程序時,由硬件自動硬件自動把把IE1清清“0”。 IT1=1,跳沿觸發(fā),跳沿觸發(fā)方式,加到引腳方式,加到引腳 上的外部中斷請求輸上的外部中斷請求輸入信號電平從高到低的入信號電平從高到低的負跳變有效,負跳變有效,并把并把IE1置置“1”。轉(zhuǎn)。轉(zhuǎn)向中斷服務(wù)程序時,由向中斷服務(wù)程序時,由硬件自動硬件自動把把IE1清清“0”。16(6)IT0選擇外部中斷請求選擇外部中斷請求0為跳沿觸發(fā)方式為跳沿觸發(fā)方式還是電平觸發(fā)方式,其意義與還是電平觸發(fā)方式,其意義與IT1類似。類似。 AT89S51復(fù)位復(fù)位后,后,TCON被清被清“0”,5個中斷個中斷源的中斷請求標志

10、均為源的中斷請求標志均為0。 TR1(D6位)、位)、TR0(D4位)這位)這2位與中斷系位與中斷系統(tǒng)無關(guān),統(tǒng)無關(guān),將在第將在第6章定時器章定時器/計數(shù)器中介紹。計數(shù)器中介紹。16172. SCON寄存器寄存器 串行口控制寄存器,串行口控制寄存器,字節(jié)地址為字節(jié)地址為98H,可位尋址。,可位尋址。 低二位低二位鎖存串行口的發(fā)送中斷和接收中斷的中斷請鎖存串行口的發(fā)送中斷和接收中斷的中斷請求標志求標志TI和和RI,格式如圖格式如圖4-4所示。所示。 17圖圖4-4 SCON中的中斷請求標志位中的中斷請求標志位18各標志位的功能:各標志位的功能: (1)TI串行口的串行口的發(fā)送發(fā)送中斷請求標志位。中

11、斷請求標志位。每發(fā)送完每發(fā)送完一一幀幀串行數(shù)據(jù)后,串行數(shù)據(jù)后,TI自動置自動置“1”。TI標志標志必須由軟件清必須由軟件清“0”。(2)RI串行口串行口接收接收中斷請求標志位。中斷請求標志位。串行口接收完串行口接收完一個串行數(shù)據(jù)幀,硬件自動使一個串行數(shù)據(jù)幀,硬件自動使RI中斷請求標志置中斷請求標志置“1”。必須必須在中斷服務(wù)程序中在中斷服務(wù)程序中用指令對用指令對RI清清“0”。194.3 中斷允許與中斷優(yōu)先級的控制中斷允許與中斷優(yōu)先級的控制 中斷允許中斷允許控制由中斷允許寄存器控制由中斷允許寄存器IE控制??刂啤?中斷優(yōu)先級中斷優(yōu)先級控制由中斷優(yōu)先級寄存器控制由中斷優(yōu)先級寄存器IP控制??刂?。

12、4.3.1 中斷允許寄存器中斷允許寄存器IE AT89S51的對各中斷源的開放或屏蔽,是由中斷允的對各中斷源的開放或屏蔽,是由中斷允許寄存器許寄存器IE控制的??刂频?。 IE字節(jié)地址為字節(jié)地址為A8H,可位尋址,可位尋址,格式如圖格式如圖4-5所示。所示。1920 圖圖4-5 中斷允許寄存器中斷允許寄存器IE的格式的格式IE對中斷的開放和關(guān)閉實現(xiàn)對中斷的開放和關(guān)閉實現(xiàn)兩級控制。兩級控制??偟拈_關(guān)中斷控制位總的開關(guān)中斷控制位EA(IE.7位),位),EA=0時,所有的中斷請求被屏蔽;時,所有的中斷請求被屏蔽;EA=1時,開放中斷,但時,開放中斷,但5個中斷源的中斷請求是否允許,個中斷源的中斷請求

13、是否允許,還要由還要由IE中的低中的低5位位所所對應(yīng)的對應(yīng)的5個中斷請求允許控制位個中斷請求允許控制位的狀態(tài)的狀態(tài)來決定(圖來決定(圖4-5)。)。2021IE中各位功能如下:中各位功能如下:(1)EA中斷允許中斷允許總開關(guān)總開關(guān)控制位??刂莆?。 EA=0,所有的中斷請求被屏蔽。所有的中斷請求被屏蔽。 EA=1,所有的中斷請求被開放。所有的中斷請求被開放。(2)ES串行口中斷允許位。串行口中斷允許位。 ES=0,禁止串行口中斷。禁止串行口中斷。 ES=1,允許串行口中斷。允許串行口中斷。(3)ET1定時器定時器/計數(shù)器計數(shù)器T1的溢出中斷允許位。的溢出中斷允許位。 ET1=0,禁止禁止T1溢出

14、中斷。溢出中斷。 ET1=1,允許允許T1溢出中斷。溢出中斷。2122(4)EX1外部中斷外部中斷1中斷允許位。中斷允許位。 EX1=0,禁止外部中斷禁止外部中斷1中斷。中斷。EX1=1,允許外部中斷允許外部中斷1中斷。中斷。(5)ET0定時器定時器/計數(shù)器計數(shù)器T0的溢出中斷允許位。的溢出中斷允許位。ET0=0,禁止禁止T0溢出中斷。溢出中斷。ET0=1,允許允許T0溢出中斷。溢出中斷。(6)EX0外部中斷外部中斷0中斷允許位。中斷允許位。EX0=0,禁止外部中斷,禁止外部中斷0中斷。中斷。EX0=1,允許外部中斷允許外部中斷0中斷。中斷。23AT89S51復(fù)位復(fù)位以后,以后,IE被清被清“

15、0”,所有所有中斷請求被中斷請求被禁止。禁止。IE中與各個中斷源相應(yīng)的位可用指令置中與各個中斷源相應(yīng)的位可用指令置“1”或或清清“0”。若使某一個中斷源被允許中斷,若使某一個中斷源被允許中斷,除了除了IE相應(yīng)的位被相應(yīng)的位被置置“1”外,還必須使外,還必須使EA位置位置“1”。改變改變IE的內(nèi)容,的內(nèi)容,可由可由位操作指令位操作指令來實現(xiàn)(即來實現(xiàn)(即SETB bit;CLR bit),也可用),也可用字節(jié)操作指令字節(jié)操作指令實現(xiàn)。實現(xiàn)。2324【例例4-1】 若允許片內(nèi)若允許片內(nèi)2個定時器個定時器/計數(shù)器中斷,并禁計數(shù)器中斷,并禁止其他中斷源的中斷請求,請編寫設(shè)置止其他中斷源的中斷請求,請編

16、寫設(shè)置IE的相應(yīng)程序的相應(yīng)程序段。段。(1)用位操作指令)用位操作指令CLRES;禁止串行口中斷;禁止串行口中斷 CLREX0;禁止外部中斷;禁止外部中斷0中斷中斷CLREX1;禁止外部中斷;禁止外部中斷1中斷中斷SETBET0;允許定時器;允許定時器/計數(shù)器計數(shù)器T0中斷中斷SETBET1;允許定時器;允許定時器/計數(shù)器計數(shù)器T1中斷中斷SETBEA ;總中斷開關(guān)位開放;總中斷開關(guān)位開放(2)用字節(jié)操作指令)用字節(jié)操作指令MOVIE,#8AH上述兩段程序?qū)ι鲜鰞啥纬绦驅(qū)E的設(shè)置是相同的。的設(shè)置是相同的。24254.3.2 中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IP AT89S51的中斷請求源有的

17、中斷請求源有兩個中斷優(yōu)先級,兩個中斷優(yōu)先級,由軟件由軟件分別設(shè)置為分別設(shè)置為高高優(yōu)先級中斷優(yōu)先級中斷或或低低優(yōu)先級中斷,優(yōu)先級中斷,可實現(xiàn):可實現(xiàn): 兩級中斷嵌套兩級中斷嵌套 AT89S51正在執(zhí)行低優(yōu)先級中斷的服務(wù)程序時,可正在執(zhí)行低優(yōu)先級中斷的服務(wù)程序時,可被高優(yōu)先級中斷請求所中斷,待高優(yōu)先級中斷處理完畢被高優(yōu)先級中斷請求所中斷,待高優(yōu)先級中斷處理完畢后,再返回低優(yōu)先級中斷服務(wù)程序。后,再返回低優(yōu)先級中斷服務(wù)程序。兩級中斷嵌套兩級中斷嵌套的的過過程程如圖如圖4-6所示。所示。252626圖圖4-6 兩級中斷嵌套的過程兩級中斷嵌套的過程27各中斷源的中斷優(yōu)先級關(guān)系,可歸納為各中斷源的中斷優(yōu)先

18、級關(guān)系,可歸納為兩條基本規(guī)則:兩條基本規(guī)則:(1)低低優(yōu)先級優(yōu)先級可被可被高高優(yōu)先級優(yōu)先級中斷,中斷,高高優(yōu)先級優(yōu)先級不能被不能被低低優(yōu)先級優(yōu)先級中斷。中斷。如果某一中斷源被設(shè)置為高優(yōu)先級中斷,則如果某一中斷源被設(shè)置為高優(yōu)先級中斷,則不能被任何其他的中斷源的中斷請求所中斷。不能被任何其他的中斷源的中斷請求所中斷。(2)任何一種任何一種中斷中斷一旦得到響應(yīng),一旦得到響應(yīng),不會被同級中斷源不會被同級中斷源所中斷。所中斷。 中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IP,其其字節(jié)地址為字節(jié)地址為B8H,可可位尋址。位尋址。只要用程序改變其內(nèi)容,可進行各中斷源只要用程序改變其內(nèi)容,可進行各中斷源中斷優(yōu)先級的設(shè)中

19、斷優(yōu)先級的設(shè)置,置,IP寄存器的格式如圖寄存器的格式如圖4-7所示。所示。2728 圖圖4-7 IP寄存器的格式寄存器的格式中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IP各位的含義各位的含義如下:如下:(1)PS串行口中斷優(yōu)先級控制位串行口中斷優(yōu)先級控制位 1:高優(yōu)先級高優(yōu)先級0:低優(yōu)先級低優(yōu)先級(2)PT1定時器定時器T1中斷優(yōu)先級控制位中斷優(yōu)先級控制位 1:高優(yōu)先級高優(yōu)先級0:低優(yōu)先級低優(yōu)先級2829(3)PX1外部中斷外部中斷1中斷優(yōu)先級控制位中斷優(yōu)先級控制位1:高優(yōu)先級高優(yōu)先級0:低優(yōu)先級低優(yōu)先級(4)PT0定時器定時器T0中斷優(yōu)先級控制位中斷優(yōu)先級控制位1:高優(yōu)先級高優(yōu)先級0:低優(yōu)先級低優(yōu)先級

20、(5)PX0外部中斷外部中斷0中斷優(yōu)先級控制位中斷優(yōu)先級控制位1:高優(yōu)先級高優(yōu)先級0:低優(yōu)先級低優(yōu)先級中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IP用位操作指令或字節(jié)操作指令可用位操作指令或字節(jié)操作指令可更新更新IP的內(nèi)容,以改變中斷優(yōu)先級。的內(nèi)容,以改變中斷優(yōu)先級。AT89S51復(fù)位復(fù)位以后,以后,IP的的內(nèi)容為內(nèi)容為0,各個中斷源各個中斷源均為低優(yōu)先均為低優(yōu)先級級中斷。中斷。2930AT89S51的中斷系統(tǒng)有的中斷系統(tǒng)有兩個兩個不可尋址的不可尋址的“優(yōu)先級激活優(yōu)先級激活觸發(fā)器觸發(fā)器”。一個指示某高優(yōu)先級一個指示某高優(yōu)先級的的中斷中斷正在執(zhí)行,所有后來的中正在執(zhí)行,所有后來的中斷均被阻止;斷均

21、被阻止;另一個觸發(fā)器指示某低優(yōu)先級另一個觸發(fā)器指示某低優(yōu)先級的的中斷中斷正在正在執(zhí)行,所有同級的中斷都被阻止,但不阻斷高優(yōu)先級的執(zhí)行,所有同級的中斷都被阻止,但不阻斷高優(yōu)先級的中斷請求。中斷請求。在同時收到在同時收到幾個同優(yōu)先級的中斷請幾個同優(yōu)先級的中斷請求求時,哪一個中斷時,哪一個中斷請求能優(yōu)先得到響應(yīng),請求能優(yōu)先得到響應(yīng),取決于內(nèi)部的查詢順序。取決于內(nèi)部的查詢順序。這相當(dāng)這相當(dāng)于在同一個優(yōu)先級內(nèi),還同時存在另一個輔助優(yōu)先級結(jié)于在同一個優(yōu)先級內(nèi),還同時存在另一個輔助優(yōu)先級結(jié)構(gòu),其查詢順序見表構(gòu),其查詢順序見表4-1。3031 表表4-1 同級中斷的查詢次序同級中斷的查詢次序由此可見,各中斷源

22、在同一個優(yōu)先級的條件下,由此可見,各中斷源在同一個優(yōu)先級的條件下,外外部中斷部中斷0的中斷優(yōu)先權(quán)的中斷優(yōu)先權(quán)最高,最高,串行口中斷串行口中斷優(yōu)先權(quán)優(yōu)先權(quán)最低。最低。3132【例例4-2】 IP寄存器初始化,寄存器初始化,AT89S51的的兩個外中斷兩個外中斷請求請求為為高優(yōu)先級,其他中斷請求為低優(yōu)先級。高優(yōu)先級,其他中斷請求為低優(yōu)先級。(1)用位操作指令)用位操作指令SETB PX0;外中斷;外中斷0設(shè)置為高優(yōu)先級設(shè)置為高優(yōu)先級SETB PX1;外中斷;外中斷1設(shè)置為高優(yōu)先級設(shè)置為高優(yōu)先級CLR PS;串行口設(shè)置為低優(yōu)先級;串行口設(shè)置為低優(yōu)先級CLR PT0;定時器;定時器/計數(shù)器計數(shù)器T0為

23、低優(yōu)先級為低優(yōu)先級CLR PT1;定時器;定時器/計數(shù)器計數(shù)器T1為低優(yōu)先級為低優(yōu)先級 (2)用字節(jié)操作指令)用字節(jié)操作指令MOV IP,#05H32334.4 響應(yīng)中斷請求的條件響應(yīng)中斷請求的條件中斷請求被響應(yīng),中斷請求被響應(yīng),必須滿足以下必要條件:必須滿足以下必要條件:(1)總中斷允許總中斷允許開關(guān)接通,即開關(guān)接通,即IE寄存器中的中斷總允寄存器中的中斷總允許位許位EA=1。(2)該中斷源發(fā)出中斷請求,即)該中斷源發(fā)出中斷請求,即對應(yīng)的中斷請求標志對應(yīng)的中斷請求標志為為“1”。(3)該中斷源的)該中斷源的中斷允許位置中斷允許位置“1”,即該中斷被允許。即該中斷被允許。(4)無同級無同級或或

24、更高級中斷更高級中斷正在被服務(wù)。正在被服務(wù)。當(dāng)當(dāng)CPU查詢到有效的中斷請求時,在滿足上述條件時,查詢到有效的中斷請求時,在滿足上述條件時,緊接著就進行中斷響應(yīng)。緊接著就進行中斷響應(yīng)。3334中斷響應(yīng)的過程:中斷響應(yīng)的過程:首先由首先由硬件自動生成硬件自動生成一條長調(diào)用指令一條長調(diào)用指令“LCALL addr16”。就是程序存儲區(qū)中就是程序存儲區(qū)中相應(yīng)的中斷入口地址。相應(yīng)的中斷入口地址。例如,例如,對于外部中斷對于外部中斷1的響應(yīng),硬件自動生成的長調(diào)用指的響應(yīng),硬件自動生成的長調(diào)用指令為令為 LCALL 0013H首先將程序計數(shù)器首先將程序計數(shù)器PC的內(nèi)容的內(nèi)容壓入堆棧壓入堆棧以保護斷點,再將以

25、保護斷點,再將中斷入口地址裝入中斷入口地址裝入PC,使程序轉(zhuǎn)向響應(yīng)中斷請求的中斷入使程序轉(zhuǎn)向響應(yīng)中斷請求的中斷入口地址??诘刂?。各中斷源服務(wù)程序的各中斷源服務(wù)程序的入口地址,入口地址,如表如表4-2所示。所示。3435 表表4-2 中斷入口地址表中斷入口地址表 兩個中斷入口間只相隔兩個中斷入口間只相隔8字節(jié),字節(jié),難以安放一個完整的難以安放一個完整的中斷服務(wù)程序。因此,中斷服務(wù)程序。因此,通常在中斷入口地址處通常在中斷入口地址處放置一放置一條無條件轉(zhuǎn)移指令,條無條件轉(zhuǎn)移指令,使程序執(zhí)行轉(zhuǎn)向使程序執(zhí)行轉(zhuǎn)向中斷服務(wù)程序入中斷服務(wù)程序入口。口。3536中斷響應(yīng)是有條件的,當(dāng)遇到下列中斷響應(yīng)是有條件的

26、,當(dāng)遇到下列三種情況三種情況之一時,中之一時,中斷響應(yīng)被斷響應(yīng)被封鎖:封鎖:(1)CPU正在處理同級或更高優(yōu)先級正在處理同級或更高優(yōu)先級的中斷。的中斷。(2)所查詢的機器周期)所查詢的機器周期不是當(dāng)前正在執(zhí)行指令的最后一不是當(dāng)前正在執(zhí)行指令的最后一個機器周期。個機器周期。只有在當(dāng)前指令執(zhí)行完畢后,才能進行中斷只有在當(dāng)前指令執(zhí)行完畢后,才能進行中斷響應(yīng),以響應(yīng),以確保確保當(dāng)前當(dāng)前指令執(zhí)行的完整性。指令執(zhí)行的完整性。(3)正在執(zhí)行的指令是)正在執(zhí)行的指令是RETI或是或是訪問訪問IE或或IP的指令。的指令。因為按照因為按照AT89S51中斷系統(tǒng)的規(guī)定,在執(zhí)行完這些指令后,中斷系統(tǒng)的規(guī)定,在執(zhí)行完這

27、些指令后,需要再執(zhí)行完一條指令,才能響應(yīng)新的中斷請求。需要再執(zhí)行完一條指令,才能響應(yīng)新的中斷請求。 如果存在上述三種情況之一,如果存在上述三種情況之一,CPU將丟棄中斷查詢結(jié)果,將丟棄中斷查詢結(jié)果,不能對中斷進行響應(yīng)。不能對中斷進行響應(yīng)。36374.5 外部中斷的響應(yīng)時間外部中斷的響應(yīng)時間 使用使用外部中斷外部中斷時,需考慮從時,需考慮從外部中斷請求到轉(zhuǎn)向中外部中斷請求到轉(zhuǎn)向中斷入口地址所需的時間。斷入口地址所需的時間。 外部中斷的外部中斷的最短最短響應(yīng)時間為響應(yīng)時間為3個機器周期個機器周期。其中中斷其中中斷請求請求標志位查詢占標志位查詢占1個個機器周期,機器周期,而這個機器周期而這個機器周期

28、恰好恰好處于指令的最后一個機器周期。處于指令的最后一個機器周期。在這個機器周期結(jié)束后,在這個機器周期結(jié)束后,中斷即被響應(yīng),中斷即被響應(yīng),CPU接著執(zhí)行一條接著執(zhí)行一條硬件子程序調(diào)用指令硬件子程序調(diào)用指令LCALL到相中斷服務(wù)程序入口,到相中斷服務(wù)程序入口,需要需要2個個機器周期。機器周期。3738 外部中斷響應(yīng)的外部中斷響應(yīng)的最長最長時間為時間為8個機器周期。個機器周期。在在CPU進行中斷標志查詢時,剛好才開始執(zhí)行進行中斷標志查詢時,剛好才開始執(zhí)行RETI或訪或訪問問IE或或IP的指令,需執(zhí)行完指令再繼續(xù)執(zhí)行一條指令后,的指令,需執(zhí)行完指令再繼續(xù)執(zhí)行一條指令后,才響應(yīng)中斷。才響應(yīng)中斷。 執(zhí)行執(zhí)

29、行RETI或訪問或訪問IE或或IP的指令,最長需要的指令,最長需要2個機器個機器周期。周期。 接著再執(zhí)行一條指令,最長指令(乘法指令接著再執(zhí)行一條指令,最長指令(乘法指令MUL和除法指令和除法指令DIV)來算,也只有)來算,也只有4個個機器周期。機器周期。再加上硬再加上硬件子程序調(diào)用指令件子程序調(diào)用指令LCALL的執(zhí)行,需要的執(zhí)行,需要2個個機器周期,機器周期,所以,外部中斷響應(yīng)的最長時間為所以,外部中斷響應(yīng)的最長時間為8個機器周期。個機器周期。39 如果已經(jīng)在如果已經(jīng)在處理同級或更高級中斷,處理同級或更高級中斷,外部中外部中斷請求的響應(yīng)時間取決于正在執(zhí)行的中斷服務(wù)程斷請求的響應(yīng)時間取決于正在

30、執(zhí)行的中斷服務(wù)程序的處理時間,這種情況下,序的處理時間,這種情況下,響應(yīng)時間就無法計響應(yīng)時間就無法計算了。算了。 這樣,在一個這樣,在一個單一中斷單一中斷的系統(tǒng)里,的系統(tǒng)里,AT89S51單片機對外部中斷請求的響應(yīng)時間總是在單片機對外部中斷請求的響應(yīng)時間總是在38個個機器周期機器周期之間。之間。39404.6 外部中斷的觸發(fā)方式選擇外部中斷的觸發(fā)方式選擇兩種觸發(fā)方式:兩種觸發(fā)方式:電平觸發(fā)電平觸發(fā)方式和方式和跳沿觸發(fā)跳沿觸發(fā)方式。方式。4.6.1 電平觸發(fā)方式電平觸發(fā)方式外部中斷申請觸發(fā)器的狀態(tài)隨著外部中斷申請觸發(fā)器的狀態(tài)隨著CPU在每個機器周期在每個機器周期采樣到的外部中斷輸入引腳的電平變化

31、而變化。采樣到的外部中斷輸入引腳的電平變化而變化。在在中斷服務(wù)程序返回之前,外部中斷請求輸入必須無中斷服務(wù)程序返回之前,外部中斷請求輸入必須無效效(即外部中斷請求輸入已由低電平變?yōu)楦唠娖剑?,否(即外部中斷請求輸入已由低電平變?yōu)楦唠娖剑?,否則會再次響應(yīng)中斷。則會再次響應(yīng)中斷。所以本方式所以本方式適合于適合于外部中斷外部中斷以低電平輸入以低電平輸入且中斷服務(wù)且中斷服務(wù)程序能程序能清除外部中斷請求源清除外部中斷請求源(即外部中斷輸入電平又變(即外部中斷輸入電平又變?yōu)楦唠娖剑┑那闆r。為高電平)的情況。40414.6.2 跳沿觸發(fā)方式跳沿觸發(fā)方式外部中斷申請觸發(fā)器能外部中斷申請觸發(fā)器能鎖存外部中斷輸入線

32、上的鎖存外部中斷輸入線上的負跳負跳變。變。即使不能響應(yīng),中斷請求標志不丟失。即使不能響應(yīng),中斷請求標志不丟失。相繼連續(xù)兩次采樣,一個機器周期為高,下一個機器相繼連續(xù)兩次采樣,一個機器周期為高,下一個機器周期采樣為低,則中斷申請觸發(fā)器置周期采樣為低,則中斷申請觸發(fā)器置1,直到,直到CPU響應(yīng)響應(yīng)此中斷時,才清此中斷時,才清0。輸入的輸入的負脈沖寬度負脈沖寬度至少保持至少保持12個時鐘周期,個時鐘周期,才能被采才能被采樣到。樣到。適合適合于以于以負脈沖形式負脈沖形式輸入的外部中斷請求。輸入的外部中斷請求。41424.7 中斷請求的撤銷中斷請求的撤銷某中斷請求被響應(yīng)后,就存在著中斷請求的撤銷問題。某

33、中斷請求被響應(yīng)后,就存在著中斷請求的撤銷問題。1. 定時器定時器/計數(shù)器中斷請求的撤銷計數(shù)器中斷請求的撤銷 硬件自動硬件自動把中斷請求標志位(把中斷請求標志位(TF0或或TF1)清清0,自,自動撤銷。動撤銷。2. 外部中斷請求的撤銷外部中斷請求的撤銷 (1)跳沿方式外部中斷請求的撤銷)跳沿方式外部中斷請求的撤銷 包括兩項:包括兩項:中斷標志位清中斷標志位清0和和外中斷信號的撤銷。外中斷信號的撤銷。 中斷標志位清中斷標志位清0是在中斷響應(yīng)后由是在中斷響應(yīng)后由硬件自動完成硬件自動完成的。的。 外中斷請求信號的撤銷,外中斷請求信號的撤銷,由于跳沿信號過后也就消由于跳沿信號過后也就消失了,失了,自動撤

34、銷。自動撤銷。4243(2)電平方式外部中斷請求的撤銷)電平方式外部中斷請求的撤銷電平方式外中斷請求的撤銷,其電平方式外中斷請求的撤銷,其中斷請求標志自動撤銷,中斷請求標志自動撤銷,但中斷請求信號的低電平可能繼續(xù)存在,為此,除了標志位但中斷請求信號的低電平可能繼續(xù)存在,為此,除了標志位清清“0”之外,還需在中斷響應(yīng)后之外,還需在中斷響應(yīng)后把中斷請求信號輸入引腳從把中斷請求信號輸入引腳從低電平低電平強制改變?yōu)閺娭聘淖優(yōu)楦唠娖?,高電平,如圖如圖4-8所示。所示。 43圖圖4-8 電平方式的外部中斷請求的撤銷電路電平方式的外部中斷請求的撤銷電路44由圖由圖4-8,用,用D觸發(fā)器鎖存觸發(fā)器鎖存外來的中

35、斷請求外來的中斷請求低電平低電平,并通并通過過D觸發(fā)器的輸出端觸發(fā)器的輸出端Q接到接到 INT0* (或(或 INT1* )。所以,)。所以,增加的增加的D觸發(fā)器不影響中斷請求。觸發(fā)器不影響中斷請求。中斷響應(yīng)后,利用中斷響應(yīng)后,利用D觸發(fā)器的觸發(fā)器的SD端接端接AT89S51的的P1.0端。端。因此,只要因此,只要P1.0端端輸出一個負脈沖輸出一個負脈沖就可以使就可以使D觸發(fā)器置觸發(fā)器置“1”,撤銷低電平的中斷請求信號。撤銷低電平的中斷請求信號。負脈沖負脈沖可在中斷服務(wù)程序中增加如下指令:可在中斷服務(wù)程序中增加如下指令:ORL P1,#01H;P1.0為為“1”ANL P1,#0FEH;P1.

36、0為為“0”O(jiān)RL P1,#01H;P1.0為為“1”44453. 串行口中斷請求的撤銷串行口中斷請求的撤銷響應(yīng)串行口的中斷后,響應(yīng)串行口的中斷后,CPU無法知道是接收中斷還是無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個中斷標志位,以發(fā)送中斷,還需測試這兩個中斷標志位,以判定是接收判定是接收操作還是發(fā)送操作,操作還是發(fā)送操作,然后才清除。所以串行口中斷請求然后才清除。所以串行口中斷請求的撤銷的撤銷只能使用只能使用軟件軟件的方法,的方法,在中斷服務(wù)程序中進行,在中斷服務(wù)程序中進行,即用如下指令在中斷服務(wù)程序中對串行口中斷標志位進即用如下指令在中斷服務(wù)程序中對串行口中斷標志位進行清除:行清除:C

37、LR TI ;清;清TI標志位標志位CLR RI ;清;清RI標志位標志位 45464.8 中斷服務(wù)子程序的設(shè)計中斷服務(wù)子程序的設(shè)計1中斷服務(wù)子程序設(shè)計的任務(wù)中斷服務(wù)子程序設(shè)計的任務(wù)任務(wù)有下列任務(wù)有下列4條:條:(1)設(shè)置中斷允許控制寄存器設(shè)置中斷允許控制寄存器IE,允許相應(yīng)中斷請允許相應(yīng)中斷請求源中斷。求源中斷。(2)設(shè)置中斷優(yōu)先級寄存器設(shè)置中斷優(yōu)先級寄存器IP,確定所使用的中斷確定所使用的中斷源優(yōu)先級。源優(yōu)先級。(3)若是外部中斷源,若是外部中斷源,還要設(shè)置中斷請求的還要設(shè)置中斷請求的觸發(fā)方觸發(fā)方式式?jīng)Q定采用電平觸發(fā)方式還是跳沿觸發(fā)方式。決定采用電平觸發(fā)方式還是跳沿觸發(fā)方式。(4)編寫中斷

38、服務(wù)子程序,編寫中斷服務(wù)子程序,處理中斷請求。處理中斷請求。4647 前前3條一般放在主程序的初始化程序段中。條一般放在主程序的初始化程序段中?!纠?-3】 假設(shè)假設(shè)允許允許外部中斷外部中斷0中斷,中斷,設(shè)定為設(shè)定為高級高級中斷,中斷,采用采用跳沿觸發(fā)跳沿觸發(fā)方式,方式,其他中斷源為低級中斷。其他中斷源為低級中斷。初始化初始化程序如下:程序如下:SETB EA; EA 位置位置1, 總中斷開關(guān)位開放總中斷開關(guān)位開放SETB EX0;EX0位置位置1,允許外部中斷,允許外部中斷0產(chǎn)生中斷產(chǎn)生中斷SETB PX0;PX0位置位置1, 外部中斷外部中斷0為高優(yōu)先級中斷為高優(yōu)先級中斷SETB IT0

39、; IT0位置位置1, 外部中斷外部中斷0為跳沿觸發(fā)方式為跳沿觸發(fā)方式47482采用中斷時的主程序結(jié)構(gòu)采用中斷時的主程序結(jié)構(gòu)程序必須先從程序必須先從主程序起始地址主程序起始地址0000H執(zhí)行。所以,在執(zhí)行。所以,在0000H起始地址的幾個字節(jié)中,起始地址的幾個字節(jié)中,用用無條件轉(zhuǎn)移指令,無條件轉(zhuǎn)移指令,跳向跳向主程序。主程序。另外,各中斷入口地址之間依次相差另外,各中斷入口地址之間依次相差8字節(jié),中斷服務(wù)字節(jié),中斷服務(wù)子程序稍長就超過子程序稍長就超過8字節(jié),這樣中斷服務(wù)子程序就占用了字節(jié),這樣中斷服務(wù)子程序就占用了其他的中斷入口地址,影響其他中斷源的中斷處理。為此其他的中斷入口地址,影響其他中

40、斷源的中斷處理。為此一般在進入中斷后,用一般在進入中斷后,用一條無條件轉(zhuǎn)移指令,一條無條件轉(zhuǎn)移指令,把中斷服務(wù)把中斷服務(wù)子程序子程序跳轉(zhuǎn)到跳轉(zhuǎn)到遠離其他中斷入口的遠離其他中斷入口的入口地址入口地址處。處。4849常用的常用的主程序結(jié)構(gòu)主程序結(jié)構(gòu)如下:如下: ORG 0000H LJMP MAIN ORG X1X2X3X4H ;某;某中斷源的中斷入口中斷源的中斷入口 LJMP INT ;INT為某中斷源的為某中斷源的中斷入口標號中斷入口標號 ORG Y1Y2Y3Y4H ;Y1Y2Y3Y4H為為主程序入口主程序入口MAIN: 主程序主程序INT: 中斷服務(wù)子程序中斷服務(wù)子程序注意:注意:如果有多個

41、中斷源,就有多個如果有多個中斷源,就有多個“ORG X1X2X3X4H”的入口地址,多個的入口地址,多個“中斷入口地址中斷入口地址”必須依次由小到大必須依次由小到大排列。排列。主程序主程序MAIN的起始地址的起始地址Y1Y2Y3Y4H,根據(jù)具體情,根據(jù)具體情況來安排。況來安排。49503中斷服務(wù)子程序的流程中斷服務(wù)子程序的流程中斷服務(wù)子程序的基本中斷服務(wù)子程序的基本流程如圖流程如圖4-9所示。下面所示。下面對有關(guān)中斷服務(wù)子程序?qū)τ嘘P(guān)中斷服務(wù)子程序執(zhí)行過程中的一些問題執(zhí)行過程中的一些問題進行說明。進行說明。 50圖圖4-9 中斷子服務(wù)程序的基本流程中斷子服務(wù)程序的基本流程51(1)現(xiàn)場保護和現(xiàn)場

42、恢復(fù))現(xiàn)場保護和現(xiàn)場恢復(fù)現(xiàn)場現(xiàn)場是指單片機中是指單片機中某些寄存器某些寄存器和和存儲器單元存儲器單元中的中的數(shù)據(jù)數(shù)據(jù)或或狀狀態(tài)。態(tài)。為使中斷服務(wù)子程序的執(zhí)行不破壞這些數(shù)據(jù)或狀態(tài),因為使中斷服務(wù)子程序的執(zhí)行不破壞這些數(shù)據(jù)或狀態(tài),因此要此要送入堆棧保存送入堆棧保存起來,這就是起來,這就是現(xiàn)場保護?,F(xiàn)場保護。 現(xiàn)場保護現(xiàn)場保護一定要一定要位于位于中斷處理程序的中斷處理程序的前面。前面。中斷處理結(jié)束中斷處理結(jié)束后,在返回主程序前,則需要把保存的現(xiàn)場內(nèi)容從堆棧中彈后,在返回主程序前,則需要把保存的現(xiàn)場內(nèi)容從堆棧中彈出恢復(fù)原有內(nèi)容,這就是出恢復(fù)原有內(nèi)容,這就是現(xiàn)場恢復(fù)。現(xiàn)場恢復(fù)?,F(xiàn)場恢復(fù)現(xiàn)場恢復(fù)一定要一定

43、要位于位于中斷處理的中斷處理的后面。后面。AT89S51的堆棧操作指令:的堆棧操作指令:“PUSH direct”和和“POP direct”,是供現(xiàn)場保護和現(xiàn),是供現(xiàn)場保護和現(xiàn)場恢復(fù)使用的。場恢復(fù)使用的。5152(2)關(guān)中斷和開中斷)關(guān)中斷和開中斷 現(xiàn)場保護前現(xiàn)場保護前和和現(xiàn)場恢復(fù)前現(xiàn)場恢復(fù)前關(guān)中斷,關(guān)中斷,是為防止此時有高一級的是為防止此時有高一級的中斷進入,避免現(xiàn)場被破壞。中斷進入,避免現(xiàn)場被破壞?,F(xiàn)場保護和現(xiàn)場恢復(fù)之后現(xiàn)場保護和現(xiàn)場恢復(fù)之后的的開中斷開中斷是為下一次的中斷做好準是為下一次的中斷做好準備,也為了允許有更高級的中斷進入。這樣,中斷處理可以被備,也為了允許有更高級的中斷進入。

44、這樣,中斷處理可以被打斷,但原來的現(xiàn)場保護和現(xiàn)場恢復(fù)不允許更改,除了現(xiàn)場保打斷,但原來的現(xiàn)場保護和現(xiàn)場恢復(fù)不允許更改,除了現(xiàn)場保護和現(xiàn)場恢復(fù)的片刻外,仍然保持著中斷嵌套的功能。護和現(xiàn)場恢復(fù)的片刻外,仍然保持著中斷嵌套的功能。但有時候,一個重要的中斷,必須執(zhí)行完畢,不允許被其他但有時候,一個重要的中斷,必須執(zhí)行完畢,不允許被其他的中斷嵌套。的中斷嵌套。可在現(xiàn)場保護前先關(guān)閉總中斷開關(guān)位,待中斷處可在現(xiàn)場保護前先關(guān)閉總中斷開關(guān)位,待中斷處理完畢后再開總中斷開關(guān)位。這樣,需把圖理完畢后再開總中斷開關(guān)位。這樣,需把圖4-9中的中的“中斷處中斷處理理”步驟前后的步驟前后的“開中斷開中斷”和和“關(guān)中斷關(guān)中斷

45、” 去掉。去掉。5253(3)中斷處理)中斷處理 應(yīng)用設(shè)計者根據(jù)任務(wù)的具體要求,來編寫中斷處理部應(yīng)用設(shè)計者根據(jù)任務(wù)的具體要求,來編寫中斷處理部分的程序。分的程序。(4)中斷返回)中斷返回中斷服務(wù)子程序中斷服務(wù)子程序最后一條指令必須是返回指令最后一條指令必須是返回指令RETI。CPU執(zhí)行完這條指令后,執(zhí)行完這條指令后,把響應(yīng)中斷時所置把響應(yīng)中斷時所置1的不可尋址的不可尋址的優(yōu)先級狀態(tài)觸發(fā)器清的優(yōu)先級狀態(tài)觸發(fā)器清0,然后從堆棧中彈出棧頂上的兩然后從堆棧中彈出棧頂上的兩個字節(jié)的斷點地址送到程序計數(shù)器個字節(jié)的斷點地址送到程序計數(shù)器PC,彈出的第一個字,彈出的第一個字節(jié)送入節(jié)送入PCH,彈出的第二個字節(jié)

46、送入,彈出的第二個字節(jié)送入PCL,從斷點處重,從斷點處重新執(zhí)行主程序。新執(zhí)行主程序。5354【例例4-4】 根據(jù)圖根據(jù)圖4-9流程,編寫中斷服務(wù)程序。設(shè)現(xiàn)場保護流程,編寫中斷服務(wù)程序。設(shè)現(xiàn)場保護只將只將PSW寄存器和累加器寄存器和累加器A的內(nèi)容壓入堆棧中保護。一個典型的內(nèi)容壓入堆棧中保護。一個典型的中斷服務(wù)子程序如下:的中斷服務(wù)子程序如下:INT:CLR EA ;CPU關(guān)中斷關(guān)中斷PUSH PSW;現(xiàn)場保護;現(xiàn)場保護PUSH AccSETB EA;總中斷允許;總中斷允許中斷處理段中斷處理段 CLR EA;關(guān)中斷;關(guān)中斷POP Acc;現(xiàn)場恢復(fù);現(xiàn)場恢復(fù)POP PSWSETB EA;總中斷允許;

47、總中斷允許RETI;中斷返回,恢復(fù)斷點;中斷返回,恢復(fù)斷點5455上述程序上述程序幾點說明:幾點說明:(1)本例的)本例的現(xiàn)場保護假設(shè)僅僅涉及現(xiàn)場保護假設(shè)僅僅涉及PSW和和A的內(nèi)容,的內(nèi)容,如有其他需要保護的內(nèi)容,只需在相應(yīng)位置再加幾條如有其他需要保護的內(nèi)容,只需在相應(yīng)位置再加幾條PUSH和和POP指令即可。注意,堆棧的操作是先進后出。指令即可。注意,堆棧的操作是先進后出。(2)“中斷處理程序段中斷處理程序段”,設(shè)計者應(yīng)根據(jù)中斷任務(wù)的,設(shè)計者應(yīng)根據(jù)中斷任務(wù)的具體要求,來編寫中斷處理程序。具體要求,來編寫中斷處理程序。(3)如果不允許被其他的中斷所中斷,可將)如果不允許被其他的中斷所中斷,可將“

48、中斷處中斷處理程序段理程序段”前后的前后的“SETB EA”和和“CLR EA”兩條指兩條指令去掉。令去掉。(4)最后一條指令必須是返回指令最后一條指令必須是返回指令RETI,不可缺少,不可缺少,CPU執(zhí)行完這條指令后,返回斷點處,重新執(zhí)行被中斷的執(zhí)行完這條指令后,返回斷點處,重新執(zhí)行被中斷的主程序。主程序。 55564.9 多外部中斷源系統(tǒng)設(shè)計多外部中斷源系統(tǒng)設(shè)計實際的應(yīng)用中,實際的應(yīng)用中,兩個外部中斷請求源往往不夠用,兩個外部中斷請求源往往不夠用,需對需對外部中斷源進行擴充,如圖外部中斷源進行擴充,如圖4-10所示。系統(tǒng)有所示。系統(tǒng)有5個外部中個外部中斷請求源斷請求源IR0IR4,高電平有

49、效。高電平有效。最高級的請求源最高級的請求源IR0直接接到直接接到AT89S51的一個外部中斷的一個外部中斷請求輸入端請求輸入端 INT0*,其余,其余4個請求源個請求源IR1IR4通過各自的通過各自的OC門(集電極開路門)連到門(集電極開路門)連到AT89S51的另一個外中斷源的另一個外中斷源輸入端輸入端 INT1* ,同時還連到,同時還連到P1口的口的P1.0P1.3腳,供腳,供AT89S51查詢。查詢。圖圖4-10所示電路,除了所示電路,除了IR0優(yōu)先權(quán)級別最高優(yōu)先權(quán)級別最高外,外,其余其余4個個外部中斷源外部中斷源的中斷優(yōu)先權(quán)的中斷優(yōu)先權(quán)取決于查詢順序取決于查詢順序。565757圖圖4

50、-10 中斷和查詢相結(jié)合的多外部中斷請求源系統(tǒng)中斷和查詢相結(jié)合的多外部中斷請求源系統(tǒng)58若圖若圖4-10中的中的4個外設(shè)中有一個外設(shè)提出高電平有效的個外設(shè)中有一個外設(shè)提出高電平有效的中斷請求信號,則中斷請求通過中斷請求信號,則中斷請求通過4個集電極開路個集電極開路OC門的輸門的輸出公共點,即出公共點,即INT1*腳的電平就會變低。究竟是哪個外設(shè)腳的電平就會變低。究竟是哪個外設(shè)提出的請求,要提出的請求,要通過程序查詢通過程序查詢P1.0P1.3引腳上的邏輯電引腳上的邏輯電平平來確定。來確定。本例假設(shè)某一時刻只能有一個外設(shè)提出中斷請求,并設(shè)本例假設(shè)某一時刻只能有一個外設(shè)提出中斷請求,并設(shè)IR1IR

51、4這這4個中斷請求源的高電平可由相應(yīng)的中斷服務(wù)個中斷請求源的高電平可由相應(yīng)的中斷服務(wù)子程序清子程序清“0”,則中斷服務(wù)子程序如下:,則中斷服務(wù)子程序如下:ORG0013H ; INT1*的中斷入口的中斷入口LJMPINT1 ORG0100H5859INT1:PUSH PSW ;保護現(xiàn)場;保護現(xiàn)場 PUSH AccJB P1.0,IR1 ;如;如P1.0為高,則為高,則IR1有請求,跳有請求,跳IR1處理處理JB P1.1,IR2 ;如;如P1.1為高,則為高,則IR2有請求,跳有請求,跳IR2處理處理 JB P1.2,IR3 ;如;如P1.2為高,則為高,則IR3有請求,跳有請求,跳IR3處理

52、處理 JB P1.3,IR4 ;如;如P1.3為高,則為高,則IR4有請求,跳有請求,跳IR4處理處理INTIR: POP Acc ;恢復(fù)現(xiàn)場;恢復(fù)現(xiàn)場 POP PSW RETI ;中斷返回;中斷返回5960IR1:AJMP INTIR ;IR1處理完,跳處理完,跳INTIR處執(zhí)行處執(zhí)行IR2: AJMP INTIR ;IR2處理完,跳處理完,跳INTIR處執(zhí)行處執(zhí)行IR3: AJMP INTIR ;IR3處理完,跳處理完,跳INTIR處執(zhí)行處執(zhí)行IR4: AJMP INTIR ;IR4處理完,跳處理完,跳INTIR處執(zhí)行處執(zhí)行查詢法擴展外部中斷源比較簡單,但是擴展的外查詢法擴展外部中斷源比較

53、簡單,但是擴展的外部中斷源個數(shù)較多時,查詢時間稍長。部中斷源個數(shù)較多時,查詢時間稍長。60IR1的中斷處理子程序IR2的中斷處理子程序IR3的中斷處理子程序IR4的中斷處理子程序614.9.2 用優(yōu)先權(quán)編碼器擴展外部中斷源用優(yōu)先權(quán)編碼器擴展外部中斷源 當(dāng)需要處理的外部中斷源數(shù)目較多而又要求響應(yīng)速度當(dāng)需要處理的外部中斷源數(shù)目較多而又要求響應(yīng)速度很快時,上述的軟件查詢方法常常滿足不了時間上的要很快時,上述的軟件查詢方法常常滿足不了時間上的要求。因為在外部中斷源很多的情況下,響應(yīng)優(yōu)先級最高求。因為在外部中斷源很多的情況下,響應(yīng)優(yōu)先級最高的中斷和響應(yīng)優(yōu)先級最低的中斷所需的查詢時間可能相的中斷和響應(yīng)優(yōu)先

54、級最低的中斷所需的查詢時間可能相差很大。如果采用差很大。如果采用硬件硬件對外部中斷源進行優(yōu)先級排隊就對外部中斷源進行優(yōu)先級排隊就可避免這個問題。下面介紹采用優(yōu)先權(quán)編碼器擴展外部可避免這個問題。下面介紹采用優(yōu)先權(quán)編碼器擴展外部中斷源的方法。中斷源的方法。 74LS148是一種是一種優(yōu)先權(quán)編碼器,優(yōu)先權(quán)編碼器,利用利用74LS148擴展擴展AT89S51外部中斷源的電路如圖外部中斷源的電路如圖4-11所示,所示,74LS148的真的真值表見表值表見表4-1。74LS148具有具有8個輸入端個輸入端“07”,用作,用作8個外部中斷請求個外部中斷請求IR0*IR7*輸入端,輸入端,3個編碼輸出端個編碼

55、輸出端A2A0與單片機的與單片機的P1.3P1.1口線相連,編碼器輸出控口線相連,編碼器輸出控制端與單片機的外中斷請求輸入腳制端與單片機的外中斷請求輸入腳INT1*相連。相連。 62圖圖4-11 擴展擴展8個外部中斷源的硬件電路個外部中斷源的硬件電路6364 在使能端在使能端EI*端端為為低電平低電平的情況下,只要其的情況下,只要其8輸入端中輸入端中任一輸入為低電平,就有一組相應(yīng)的編碼從任一輸入為低電平,就有一組相應(yīng)的編碼從A2A0端輸端輸出,且同時編碼器輸出端輸出為低電平。出,且同時編碼器輸出端輸出為低電平。 如果如果8中斷源中斷源IR0*IR7*中有多個中斷請求時(低有中有多個中斷請求時(

56、低有效),其優(yōu)先權(quán)最高的一組編碼就出現(xiàn)在單片機的效),其優(yōu)先權(quán)最高的一組編碼就出現(xiàn)在單片機的P1.3P1.1口線上,此時口線上,此時GS*端為低電平,則端為低電平,則AT89S51的的INT1*端就為低電平,若中斷被允許,就可以響應(yīng)外部端就為低電平,若中斷被允許,就可以響應(yīng)外部中斷源所提出的中斷請求。中斷源所提出的中斷請求。65 例如,中斷請求源例如,中斷請求源IR1*、IR4*與與IR6* 同時發(fā)出中同時發(fā)出中斷請求的情況下,斷請求的情況下, GS*端為低電平,向端為低電平,向INT1*發(fā)出中發(fā)出中斷請求,同時斷請求,同時A2A0端僅輸出中斷優(yōu)先級最高的編碼端僅輸出中斷優(yōu)先級最高的編碼“001”,當(dāng),當(dāng)單片機響應(yīng)該中斷請求信號后,進入單片機響應(yīng)該中斷請求信號后,進入INT1*中斷服務(wù)子程序,然后讀入從中斷服務(wù)子程序,然后讀入從P1.3P1.1輸入的輸入的編碼編碼“001”,從而去響應(yīng)的中斷請求。,從而去響應(yīng)的中斷請求。 為了使程序轉(zhuǎn)向各中斷源的中斷服

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論