《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第5章 80C51單片機(jī)的中斷系統(tǒng)最終_第1頁
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第5章 80C51單片機(jī)的中斷系統(tǒng)最終_第2頁
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第5章 80C51單片機(jī)的中斷系統(tǒng)最終_第3頁
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第5章 80C51單片機(jī)的中斷系統(tǒng)最終_第4頁
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第5章 80C51單片機(jī)的中斷系統(tǒng)最終_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

15.1中斷的概念5.280C51中斷系統(tǒng)的結(jié)構(gòu)5.2.1中斷源及中斷標(biāo)志位5.2.2中斷控制寄存器5.3中斷響應(yīng)過程5.4中斷服務(wù)函數(shù)及應(yīng)用5.4.1中斷服務(wù)函數(shù)5.4.2外部中斷服務(wù)函數(shù)應(yīng)用設(shè)計(jì)2第5章80C51單片機(jī)的中斷系統(tǒng)本章介紹80C51單片機(jī)片內(nèi)重要功能部件中斷系統(tǒng)的結(jié)構(gòu)、工作原理和應(yīng)用設(shè)計(jì),通過本章的學(xué)習(xí),讀者重點(diǎn)掌握中斷系統(tǒng)相關(guān)的特殊功能寄存器的使用,能熟練設(shè)計(jì)中斷系統(tǒng)初始化程序以及中斷函數(shù)。5.1中斷的概念在嵌入式系統(tǒng)(包括單片機(jī))應(yīng)用中,當(dāng)內(nèi)部、外部隨機(jī)事件發(fā)生時,能及時響應(yīng)并實(shí)時處理都是利用中斷技術(shù)實(shí)現(xiàn)的。中斷是指CPU正在執(zhí)行程序的過程中,CPU內(nèi)部或外部某一事件(如內(nèi)部定時器/計(jì)數(shù)器的溢出或外部信號通過某一個引腳發(fā)生電平的變化、引腳脈沖沿跳變等)作為中斷源向CPU發(fā)出中斷請求信號,要求CPU暫時終止當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序,待中斷服務(wù)請求處理完畢后,再回到原來被中斷的程序處(斷點(diǎn))繼續(xù)執(zhí)行。這種程序在執(zhí)行過程中由于內(nèi)部或外界的隨機(jī)事件而被中間打斷的情況稱為“中斷”。單片機(jī)對中斷源中斷服務(wù)請求的整個響應(yīng)和處理過程如圖5-1所示。3圖5-1單片機(jī)中斷響應(yīng)和處理過程圖

中斷的發(fā)生是由內(nèi)部或外部因素隨機(jī)決定的,程序中無法事先安排調(diào)用指令,所以響應(yīng)中斷服務(wù)程序的過程是由硬件自動完成的。這種模式的實(shí)現(xiàn)依靠中斷系統(tǒng),中斷系統(tǒng)是單片機(jī)的重要組成部分,實(shí)時控制、故障自動處理、計(jì)算機(jī)與外設(shè)間數(shù)據(jù)傳送一般采用中斷系統(tǒng)。中斷系統(tǒng)的應(yīng)用大大提高了單片機(jī)的工作效率。80C51單片機(jī)具有比較完善的中斷系統(tǒng),下面介紹其中斷系統(tǒng)的結(jié)構(gòu)及功能。45.280C51中斷系統(tǒng)的結(jié)構(gòu)80C51中斷系統(tǒng)的結(jié)構(gòu)如圖5-2所示。80C51單片機(jī)系統(tǒng)有5個中斷請求源,分為兩個中斷優(yōu)先級,中斷服務(wù)程序可實(shí)現(xiàn)兩級嵌套,中斷系統(tǒng)功能的實(shí)現(xiàn)是通過軟件對SFR進(jìn)行控制,每個中斷源可獨(dú)立設(shè)置為允許中斷或關(guān)中斷狀態(tài),每個中斷源可獨(dú)立設(shè)置為高優(yōu)先級或低優(yōu)先級。5.2.1中斷源及中斷標(biāo)志位80C51單片機(jī)有5個,各中斷源是否有中斷請求,是由中斷請求標(biāo)志位來表示的。中斷源及請求標(biāo)志位如表5-1所示。中斷源的中斷請求標(biāo)志位分別由TCON和SCON的相應(yīng)位鎖存。5表5-1中斷源及標(biāo)志位6圖5-280C51中斷系統(tǒng)結(jié)構(gòu)示意圖75.2.2中斷控制寄存器80C51通過對4個特殊功能寄存器的設(shè)置來控制5個中斷源是否允許中斷、各中斷源的中斷優(yōu)先級別、中斷申請方式以及標(biāo)識是否有中斷請求等。用于中斷控制和標(biāo)識的4個SFR分別是:定時器/計(jì)數(shù)器及外部中斷控制寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE以及中斷優(yōu)先級控制寄存器IP。

1.TCONTCON字節(jié)地址為88H,每位可以單獨(dú)尋址和設(shè)置,每位名稱、位地址及含義如表5-2所示。TCON中包含2位外部中斷請求源的中斷觸發(fā)方式控制位,還包括與中斷有關(guān)的4位標(biāo)志位。表5-2TCON寄存器8

(1)TCON中與外部中斷有關(guān)的2位控制位①IT0:外部中斷0的中斷觸發(fā)方式控制位。IT0=0時,外部中斷0為電平觸發(fā)方式,當(dāng)引腳P3.2為低電平,則IE0自動置1,表示有中斷請求。IT0=1時,外部中斷0為跳沿觸發(fā)方式,若CPU檢測到引腳P3.2有由高到低的負(fù)跳邊沿時,則使IE0置1,表示有中斷請求。②IT1:外部中斷1的中斷觸發(fā)方式控制位。其含義與IT0類同。(2)外部中斷觸發(fā)方式有關(guān)外部中斷觸發(fā)方式的說明如下。若ITx(x=0,1)=0,為電平觸發(fā)方式,在引腳P3.2(P3.3)上被檢測的低電平必須保持到CPU響應(yīng)該中斷時為止,且在中斷服務(wù)程序返回前變?yōu)楦唠娖剑悦庠谥袛喾祷睾笥衷俅雾憫?yīng)該中斷而出錯。所以電平觸發(fā)方式適用于外部中斷請求輸入為低電平(為被CPU采樣到,低電平應(yīng)至少保持12個振蕩周期),且能在中斷服務(wù)程序中撤銷請求源的情況。9

②若ITx=1,則為跳沿觸發(fā)方式。CPU在連續(xù)的兩個機(jī)器周期中,前一個機(jī)器周期從P3.2(P3.3)引腳上檢測到高電平,后一個機(jī)器周期檢測到低電平,才置位IEx(IE0或IE1),由IEx發(fā)出中斷請求。所以跳變觸發(fā)方式的外部中斷,要求輸入的負(fù)脈沖寬度至少保持12個振蕩周期,以確保檢測到引腳上的電平跳變。(3)TCON中與中斷有關(guān)的標(biāo)志位TCON中與中斷有關(guān)的標(biāo)志位有4位,功能如下。①IE0:外部中斷0的中斷請求標(biāo)志位。當(dāng)單片機(jī)檢測到外部中斷0引腳(P3.2)上出現(xiàn)有效的中斷請求信號時,由硬件使IE0置1。當(dāng)CPU響應(yīng)該中斷請求時,由硬件自動對IE0清0。②IE1:外部中斷1的中斷請求標(biāo)志。其含義與IE0類同。③TF0:定時器/計(jì)數(shù)器T0的溢出中斷請求標(biāo)志位,啟動定時器T0后,T0從設(shè)置初值開始加1計(jì)數(shù)。當(dāng)計(jì)數(shù)器T0最高位產(chǎn)生溢出時,由硬件自動對TF0置1,并向CPU發(fā)出中斷請求。當(dāng)CPU響應(yīng)中斷時,由硬件自動使TF0清0。10

④TF1:定時器/計(jì)數(shù)器T1的溢出中斷請求標(biāo)志位。含義與TF0相同。2.SCONSCON字節(jié)地址為98H,每位可以單獨(dú)尋址和設(shè)置,每位名稱、位地址及含義如表5-3所示。SCON中包含2位與串口中斷有關(guān)的標(biāo)志位。表5-3SCON寄存器

(1)串行口發(fā)送中斷請求標(biāo)志TI當(dāng)CPU每發(fā)送完一幀數(shù)據(jù)后,此時SBUF寄存器空,硬件自動對TI置1,請求中斷。CPU響應(yīng)中斷后,必須在中斷服務(wù)程序中用指令對TI清0。11

(2)串行口接收中斷請求標(biāo)志RI當(dāng)串行口接收完一幀數(shù)據(jù)時,此時SBUF寄存器滿,硬件自動對RI置1,請求中斷。CPU響應(yīng)中斷后,必須在中斷服務(wù)程序中用指令對RI清0。3.中斷允許控制寄存器IEIE字節(jié)地址為A8H,每位可以單獨(dú)尋址并設(shè)置,每位名稱、位地址及含義如表5-4所示。80C51單片機(jī)對中斷的開放和關(guān)閉采用兩級控制。第一級是設(shè)置了1個總中斷控制位EA(IE.7位),第二級設(shè)置了5個中斷源的中斷開放與否的中斷請求允許控制位。表5-4IE寄存器12

(1)中斷允許總控制位EAEA=0,關(guān)閉所有中斷;EA=1,開放所有中斷,但是否允許各中斷源的中斷請求,還取決于各中斷源的中斷允許控制位的設(shè)置。(2)串行口的中斷允許位ESES=0:禁止串口中斷;ES=1:允許串口中斷。(3)定時器/計(jì)數(shù)器T1的中斷允許位ET1ET1=0:禁止T1中斷;ET1=1:允許T1中斷。(4)外部中斷1()的中斷允許位EX1EX1=0:禁止外部中斷1中斷;EX1=1:允許外部中斷1中斷。(5)定時器/計(jì)數(shù)器T0的中斷允許位ET0ET0=0:禁止T0中斷;ET0=1:允許T0中斷。13

(6)外部中斷0()的中斷允許位EX0EX0=0:禁止外部中斷0中斷;EX0=1:允許外部中斷0中斷。

4.中斷優(yōu)先級控制寄存器IP80C51單片機(jī)設(shè)有兩級中斷優(yōu)先級,可設(shè)置IP寄存器相應(yīng)位實(shí)現(xiàn)2級中斷優(yōu)先級選擇。IP字節(jié)地址為B8H,各位名稱、位地址及含義如表5-5所示。表5-5IP寄存器

(1)串行口中斷優(yōu)先級控制位PSPS=1,設(shè)置串口高優(yōu)先級;PS=0,設(shè)置串口低優(yōu)先級。(2)定時器/計(jì)數(shù)器T1中斷優(yōu)先級控制位PT114

PT1=1,設(shè)置T1高優(yōu)先級;PT1=0,設(shè)置T1低優(yōu)先級。(3)外部中斷1優(yōu)先級控制位PX1PX1=1,設(shè)置外部中斷1高優(yōu)先級;PX1=0,設(shè)置外部中斷1低優(yōu)先級。(4)定時器/計(jì)數(shù)器T0中斷優(yōu)先級控制位PT0PT0=1,設(shè)置T0高優(yōu)先級;PT0=0,設(shè)置T0低優(yōu)先級。(5)外部中斷0中斷優(yōu)先級控制位PX0PX0=1,設(shè)置外部中斷0高優(yōu)先級;PX0=0,設(shè)置外部中斷0低優(yōu)先級。80C51單片機(jī)復(fù)位后,IP=0,5個中斷源都處于低優(yōu)先級中斷。80C51單片機(jī)中斷系統(tǒng)設(shè)置中斷優(yōu)先級控制寄存器IP和中斷允許寄存器IE后,如果幾個同一優(yōu)先級的中斷源同時向CPU申請中斷,CPU通過內(nèi)部順序查詢邏輯電路,按自然優(yōu)先級順15序確定應(yīng)該響應(yīng)哪個中斷請求。自然優(yōu)先級由硬件形成,其排列如表5-6所示,依次為外部中斷0、定時器0溢出中斷、外部中斷1、定時器1溢出中斷、串行口中斷。5個中斷源中斷請求響應(yīng)后,程序分別轉(zhuǎn)向?qū)?yīng)的5個固定的中斷入口地址(中斷向量),具體地址如表5-6所示。表5-6中斷源入口地址及同一優(yōu)先級下的自然優(yōu)先序

【例5-1】若允許開放外部中斷0、外部中斷1中斷,并選擇外部中斷0為跳沿觸發(fā)方式,外部中斷1為電平出發(fā)方式,并設(shè)置外部中斷1具有高的優(yōu)先級。參考程序如下:16{……EA=1; //開放總中斷EX0=1; //允許外部中斷0中斷EX1=1; //允許外部中斷1中斷IT0=1; //設(shè)置外部中斷0為跳沿觸發(fā)方式IT1=0; //設(shè)置外部中斷1為電平觸發(fā)方式PX1=1; //外部中斷1具有高優(yōu)先級……}5.3中斷響應(yīng)過程80C51單片機(jī)對中斷源中斷請求作出響應(yīng),必須滿足中斷響應(yīng)條件;中斷請求也會遇到被封鎖的情況,中斷還會出現(xiàn)嵌套,本節(jié)討論中斷響應(yīng)的過程及中斷響應(yīng)時間。1.滿足中斷響應(yīng)需要的條件CPU對中斷請求進(jìn)行響應(yīng),必須檢測到下面5個條件。(1)中斷允許總控制位開放,即EA=1。17

(2)某一中斷源有請求信號,即中斷源對應(yīng)的中斷標(biāo)志位為1。(3)該中斷源對應(yīng)的中斷允許位置1。(4)無同級或更高級中斷正在服務(wù)。 (5)當(dāng)前的指令周期已經(jīng)結(jié)束,且當(dāng)前指令不是RETI或訪問IE和IP的指令。CPU響應(yīng)中斷時,第一步置位相應(yīng)的優(yōu)先級激活觸發(fā)器,以便封鎖同級和低級的中斷。第二步,把程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧(但不自動保存程序狀態(tài)字PSW),同時把被響應(yīng)的中斷服務(wù)程序的入口地址裝入PC中。第三步,在硬件的控制下,程序轉(zhuǎn)向被響應(yīng)的中斷向量,執(zhí)行中斷請求需要的中斷服務(wù)程序。

2.中斷請求被封鎖的情況單片機(jī)CPU在每個機(jī)器周期的S5P2節(jié)拍采樣中斷標(biāo)志,在下一個機(jī)器周期對采樣到的中斷源查詢。如果遇到下列3種情況之一時,對該中斷源的響應(yīng)被封鎖。18

(1)CPU正在處理同級或高級的中斷。(2)現(xiàn)行的機(jī)器周期不是當(dāng)前所執(zhí)行指令的最后一個機(jī)器周期。(3)當(dāng)前正在執(zhí)行的指令是中斷返回指令(RETI)或是對IE或IP寄存器訪問的指令。

3.中斷的嵌套80C51單片機(jī)有兩個中斷優(yōu)先級。當(dāng)CPU正在執(zhí)行中斷服務(wù)程序時,又有其他中斷源發(fā)出中斷申請,CPU要分析判斷,決定是否響應(yīng)該中斷。判決規(guī)則如下:(1)若是同級中斷源申請中斷,CPU將不予理睬;(2)若是高級中斷源申請中斷,CPU將轉(zhuǎn)去響應(yīng)高級中斷請求,待高級中斷服務(wù)程序執(zhí)行完畢,CPU再轉(zhuǎn)回低級中斷服務(wù)程序斷點(diǎn)處接著執(zhí)行。這就是中斷的嵌套,二級中斷嵌套程序執(zhí)行過程如圖5-3所示。19圖5-380C51中斷的嵌套調(diào)用過程

4.中斷響應(yīng)時間以外部中斷響應(yīng)為例,單片機(jī)在每個機(jī)器周期的S5P2時,采集外部中斷和的引腳電平,并鎖存到IE0和IE1中,這個設(shè)置IE0和IEl的標(biāo)志位在下一個機(jī)器周期才被查詢電路查詢。如果產(chǎn)生了中斷請求,而且滿足響應(yīng)的條件,CPU響應(yīng)中斷后,由硬件生成一條雙機(jī)器周期的長調(diào)用指令轉(zhuǎn)到相應(yīng)的中斷向量處,因此,20從中斷請求有效到執(zhí)行中斷服務(wù)程序的時間間隔至少需要3個完整的機(jī)器周期。如果中斷請求被封鎖,那么80C51將需要更長的響應(yīng)時間。(1)若同級的或高優(yōu)先級中斷已經(jīng)在執(zhí)行,則等待時間取決于正在處理的中斷服務(wù)程序的長度。(2)若正在執(zhí)行的是RETI指令或者是訪問IE或IP指令,指令執(zhí)行時間為2個機(jī)器周期,則CPU接著還需要執(zhí)行一條指令才響應(yīng)中斷,如果這條指令是需要最長時間指令,即4個機(jī)器周期的MUL或DIV指令,另外加上執(zhí)行由硬件生成的2個機(jī)器周期的長調(diào)用指令轉(zhuǎn)到相應(yīng)的中斷向量處所需時間,外部中斷響應(yīng)最長時間為8個機(jī)器周期。這樣,在單片機(jī)應(yīng)用系統(tǒng)中只有一個中斷源的情況下,響應(yīng)時間總是在3~8個機(jī)器周期之間。5.4中斷服務(wù)函數(shù)及應(yīng)用在第3章中已簡要介紹中斷服務(wù)函數(shù),C51中定義了中斷函數(shù)來編寫中斷服務(wù)程序,大大減輕了編寫中斷服務(wù)程序的復(fù)雜程度。21本節(jié)介紹中斷服務(wù)函數(shù)的設(shè)計(jì)及應(yīng)用。5.4.1中斷服務(wù)函數(shù)在C51中專門設(shè)計(jì)interrupt修飾符來定義中斷服務(wù)函數(shù),對聲明為中斷服務(wù)程序的函數(shù),在系統(tǒng)編譯時會自動將當(dāng)前工作寄存器區(qū)內(nèi)容入棧、函數(shù)返回前將被保護(hù)的內(nèi)容出棧,并將中斷服務(wù)函數(shù)安排在程序存儲器中的相應(yīng)位置。中斷服務(wù)函數(shù)的格式為:函數(shù)類型函數(shù)名(void)interruptnusingm對中斷服務(wù)函數(shù)使用的說明:1.中斷函數(shù)沒有返回值,函數(shù)類型建議用void類型。2.interrupt后的n為中斷號,對于MCS-51子系列(如80C51),n取值為0~4,對MCS-52子系列,n取值為0~5,中斷服務(wù)程序從8×n+3的中斷向量處開始執(zhí)行。中斷號與中斷向量的對應(yīng)關(guān)系如表5-7所示。22表5-7中斷號與中斷向量的對應(yīng)關(guān)系

3.關(guān)鍵字using是可選項(xiàng),后面的m用來選擇4個工作寄存器區(qū)。m取值為0~3。工作寄存器區(qū)與工作寄存器地址如表5-8所示。中斷號n中斷源中斷向量8n+30外部中斷00003H1定時器/計(jì)數(shù)器T0000BH2外部中斷10013H3定時器/計(jì)數(shù)器T1001BH4串行口中斷0023H5定時器/計(jì)數(shù)器T2002BH23表5-8工作寄存器區(qū)及地址

中斷服務(wù)函數(shù)中如果選用usingm,程序執(zhí)行開始會自動將PSW入棧,并修改PSW中的工作寄存器組選擇位RS1、RS0到m指定的工作區(qū)。4.在中斷服務(wù)程序中調(diào)用其他函數(shù),必須保證所調(diào)用函數(shù)使用的工作寄存器區(qū)與中斷函數(shù)使用的寄存器區(qū)不同。工作寄存器區(qū)mRS1 RS0 工作寄存器工作寄存器在RAM中的地址000R0~R700~07H101R0~R708~0FH210R0~R710~17H311R0~R718~1FH245.4.2外部中斷服務(wù)函數(shù)應(yīng)用設(shè)計(jì)本節(jié)通過幾個案例,介紹有關(guān)外部中斷應(yīng)用程序的設(shè)計(jì)。例5-2】電路如圖5-4所示,設(shè)計(jì)一個對外部中斷0計(jì)數(shù)的程序。在80C51單片機(jī)的P1口連接8只LED,在外部中斷0輸入引腳P3.2連接一個按鈕開關(guān)K。要求如下:(1)每按一次K,產(chǎn)生外部中斷0請求,在外部中斷0服務(wù)程序中統(tǒng)計(jì)中斷發(fā)生的次數(shù);(2)主程序?qū)崿F(xiàn)在8個LED上按16進(jìn)制方式顯示中斷次數(shù)。25圖5-4一個外部中斷計(jì)數(shù)電路26

參考程序如下:#include<reg51.h>#defineucharunsignedcharuchara=0x00;voidDelay(unsignedintx)//延時1ms函數(shù){ucharj;while(x--){for(j=0;j<125;j++);}}voidmain() //主函數(shù){uchartemp;EA=1; //開放總中斷EX0=1; //允許外部中斷0中斷IT0=1; //外部中斷0為負(fù)跳變觸發(fā)方式27while(1) {temp=a;temp=~temp;P1=temp;}}voidint0()interrupt0 //外部中斷0服務(wù)程序{a=a+1;} 【例5-3】設(shè)計(jì)二個外部中斷嵌套程序,電路如圖5-5所示。在80C51單片機(jī)的P0口連接8只LED,在外部中斷0輸入引腳P3.2和外部中斷1輸入引腳P3.3各接一個按鈕開關(guān)K1和K2。要求如下:(1)K1和K2均未按下時,P0口連接的8只LED呈間隔點(diǎn)亮后交替;(2)按下K1,產(chǎn)生高優(yōu)先級的外部中斷0請求,在28中斷服務(wù)程序中使8只LED自上而下流水點(diǎn)亮,顯示3遍。(3)按下K2,產(chǎn)生低優(yōu)先級的外部中斷1請求,在中斷服務(wù)程序中使8只LED自下而上流水點(diǎn)亮,顯示3遍。圖5-5二個外部中斷嵌套電路29

參考程序如下:#include<reg51.h>#include<intrins.h> #defineucharunsignedcharuchardisplay[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voidDelay(unsignedintx)//延時1ms函數(shù){ucharj;while(x--){for(j=0;j<125;j++);}}voidmain() //主函數(shù){EA=1; //開放總中斷EX0=1; //允許外部中斷0中斷EX1=1; //允許外部中斷1中斷30IT0=1; //外部中斷0為負(fù)跳變觸發(fā)方式IT1=1; //外部中斷1為負(fù)跳變觸發(fā)方式PX0=1; //外部中斷0中斷具有高優(yōu)先級PX1=0; //外部中斷1中斷具有低優(yōu)先級while(1) {P0=0x55;Delay(500);P0=0xaa;Delay(500);}}voidint0()interrupt0 //外部中斷0服務(wù)程序{ucharm,a;for(m=0;m<3;m++){for(a=0;a<8;a++) {P0=display[a];31Delay(500);}}} voidint1()interrupt2 //外部中斷0服務(wù)程序{ucharn;P0=0x7f;Delay(500);for(n=0;n<23;n++){P0=_cror_(P0,1);Delay(500); }}32

【例5-4】設(shè)計(jì)單片機(jī)響應(yīng)8個外部中斷的例子,電路圖如圖5-6所示。8只開關(guān)K1-K8一端接地,另一端連接80C51單片機(jī)的P2口,同時連接8輸入與非門74LS30的8個輸入端。74LS30輸出端經(jīng)反相器74LS04連接至單片機(jī)外部中斷0輸入引腳P3.2,當(dāng)某個開關(guān)按下,表示某個相應(yīng)外部中斷發(fā)生,此時地電位信號通過按下的開關(guān)送與非門74LS30輸入端,74LS30輸出的高電平經(jīng)反相器74LS04取反,生成的低電平信號作為外部中斷0的請求信號。單片機(jī)響應(yīng)外部中斷0后,在中斷程序中通過P2口查詢發(fā)生的外部中斷號。要求編程實(shí)現(xiàn)如下要求:(1)K1~K8均未按下時,P1口連接的8只LED呈間隔點(diǎn)亮;(2)若8只開關(guān)對應(yīng)P1口連接的8個LED,當(dāng)按下某一個開關(guān),則相應(yīng)的LED點(diǎn)亮。33圖5-6單片機(jī)響應(yīng)8個外部中斷34

參考程序如下:#include<reg51.h>#include<intrins.h> #defineucharunsignedcharsbitKEY1=P2^0; sbitKEY2=P2^1;sbitKEY3=P2^2;sbitKEY4=P2^3;sbitKEY5=P2^4;sbitKEY6=P2^5;sbitKEY7=P2^6;sbitKEY8=P2^7;uchara=0x55;voidDelay(unsignedintx){ucharj;35while(x--){for(j=0;j<125;j++);}}voidmain() {EA=1; EX0=1; IT0=1; P1=a;Delay(500); while(1) {P1=a;Delay(500);}}36voidint0()interrupt0 {P2=0xff;if(KEY1==0){a=0xfe;}elseif(KEY2==0){a=0xfd;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論