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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章單片機的中斷系統(tǒng)51單片機的中斷系統(tǒng)是8位機中功能較強的,可以提供5個中斷源(52系列是6個),具有兩個中斷優(yōu)先級,可以實現(xiàn)兩級中斷嵌套。5.1中斷的基本知識

5.1.1中斷源及中斷結構MCS-51單片機的5個中斷源分為兩種類型:一類是外部中斷源,包括

;一類是內部中斷源,包括兩個定時器/計數(shù)器(T0和T1)的溢出中斷和串行口的發(fā)送/接收中斷。MCS-51單片機中斷系統(tǒng)結構圖5-1所示。1講圖5-1MCS-51單片機中斷系統(tǒng)結構

1.外部中斷

它們的中斷請求信號有效方式分為電平觸發(fā)和脈沖觸發(fā)兩種。電平方式是低電平有效,脈沖方式為負跳變觸發(fā)有效。對于電平方式,只要檢測到低電平信號即為有效申請。對于脈沖方式,則需要比較兩次檢測到的信號,才能確定中斷請求信號是否有效。中斷請求信號高低電平的狀態(tài)都應該至少維持一個機器周期,以確保電平變化能被單片機檢測到。2.內部中斷除外部中斷外,內部還有TF0、TF1、TI/RI分別為定時/計數(shù)器溢出中斷和串行口的發(fā)送/接收中斷的中斷源。5.1.2中斷控制

MCS-51單片機設置了4個專用寄存器用于中斷控制,用戶通過設置其狀態(tài)來管理中斷系統(tǒng)。1.定時器控制寄存器(TCON)TCON的格式如圖5-2所示。

IT0IE0IT1IE1TR0TF0TR1TF1D7D6D5D4D3D2D1D0TCON(88H)圖5-2TCON的格式在該寄存器中,TR1、TR0用于定時/計數(shù)器的啟動控制,其余6位用于中斷控制,其作用如下:1)IT0為外中斷0請求信號方式控制位。IT0=1為脈沖觸發(fā)方式(負跳變有效),IT0=0為電平方式(低電平有效)。2)IE0為外部中斷0請求標志位。當CPU檢測到(P3.2)端有中斷請求信號時,由硬件置位,使IE0=1請求中斷,中斷響應后轉向中斷服務程序時,由硬件自動清零。3)IT1為外部中斷1請求信號方式控制位,其作用同IT0。4)IE1為外部中斷1請求標志位,其作用同IE0。5)TF0(TF1)為定時/計數(shù)器溢出標志位,此標志的作用將在5.3節(jié)說明。

2.串行口控制寄存器(SCON)SCON的格式如圖5-3所示。RITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D0TCON(98H)圖5-3SCON的格式

SCON中的高6位用于串行口控制,低2位(RI、TI)用于中斷控制,其作用如下:1)TI為串行口發(fā)送中斷請求標志位,發(fā)送完一幀串行數(shù)據(jù)后,由硬件置1,其清零必須由軟件完成。2)RI為串行口接收中斷請求標志位,接收完一幀串行數(shù)據(jù)后,由硬件置1,其清零必須由軟件完成。

在MCS-51單片機串行口中,以TI和RI的邏輯“或”作為一個內部中斷源,二者之一置位就可以產生串行口中斷請求,然后在中斷服務程序中測試這兩個標志位,以決定是發(fā)送中斷還是接收中斷。3.中斷允許控制寄存器(IE)中斷允許控制寄存器的格式如圖5-4所示。EX0ET0EX1ET1ES————EAD7D6D5D4D3D2D1D0IE(A8H)圖5-4中斷允許控制寄存器的格式

寄存器中用于控制中斷的共6位,實現(xiàn)中斷管理,其作用如下。EA為中斷允許總控制位。EA=1時,CPU開放中斷;EA=0時,CPU屏蔽所有中斷請求。

ES、ET1、EX1、ET0、EX0為對應的串行口中斷、定時/計數(shù)器1中斷、外部中斷1中斷、定時器/計數(shù)器0中斷、外部中斷0中斷的中斷允許位。對應位為1時,允許其中斷,對應位為0時,禁止其中斷。MCS-51單片機中斷系統(tǒng)的管理是由中斷允許總控制EA和各中斷源的控制位聯(lián)合作用實現(xiàn)的,缺一不可。MCS-51單片機系統(tǒng)復位后,IE各位均清零,即禁止所有中斷。4.中斷優(yōu)先級控制寄存器(IP)中斷優(yōu)先級控制寄存器的格式如圖5-5所示。PX0PT0PX1PT1PS——————D7D6D5D4D3D2D1D0IP(B8H)圖5-5中斷優(yōu)先級控制寄存器的格式圖5-5中斷優(yōu)先級控制寄存器的格式MCS-51單片機規(guī)定了兩個中斷優(yōu)先級:高級中斷和低級中斷。用中斷優(yōu)先級寄存器(IP)的5位狀態(tài)管理5個中斷源的優(yōu)先級別,即PS、PT1、TX1、PT0、PX0分別對應串行口中斷、定時器/計數(shù)器1中斷、外部中斷1中斷、定時器/計數(shù)器0中斷、外部中斷0中斷。當相應位為1時,設置其為高級中斷;相應位為0時,設置其為低級中斷。5.1.3中斷優(yōu)先級結構MCS-51中斷系統(tǒng)具有兩級優(yōu)先級(由IP寄存器把各中斷源的優(yōu)先級分為高優(yōu)先級和低優(yōu)先級),它們遵循下列兩條基本原則:1).為了實現(xiàn)中斷嵌套,高優(yōu)先級中斷請求可以中斷低優(yōu)先級的中斷服務,反之,則不允許;2).同等優(yōu)先級中斷源之間不能中斷對方的中斷服務過程。為了實現(xiàn)上述兩條原則,中斷系統(tǒng)內部包含兩個不可尋址的優(yōu)先級狀態(tài)觸發(fā)器。其中一個用來指示某個高優(yōu)先級的中斷源正在得到服務,并阻止所有其他中斷的響應;另一個觸發(fā)器則指出某低優(yōu)先級的中斷正得到服務,所有同級的中斷都被阻止,但不阻止高優(yōu)先級中斷源。當同時收到幾個同一優(yōu)先能的中斷時,響應哪一個中斷源取決于內部查詢順序。其優(yōu)先級排列如圖5-6所示。中斷源外部中斷0定時器/計數(shù)器0溢出定時器/計數(shù)器1溢出串行口外部中斷1同級內中斷優(yōu)先級別最高最低圖5-6中斷優(yōu)先級排列5.1.4中斷服務程序入口地址

MCS-51單片機5個中斷源的中斷服務程序入口地址如表5-1所示。表5-1MCS-51中斷服務程序入口地址表5.1.5中斷請求的撤除在中斷請求被響應前,中斷源發(fā)出的中斷請求由CPU鎖存在特殊功能寄存器TCON和SCON的相應中斷標志位中。一旦某個中斷請求得到響應,CPU必須把它的響應標志位復位成0狀態(tài),否則MCS-51就會因中斷未能得到及時撤除而重復響應同一中斷請求,這是絕對不允許的。MCS-51單片機有5個中斷源,但實際上只分屬于3種中斷類型。這3種類型是:外部中斷、定時器溢出中斷和串行口中斷。對于這3種中斷類型的中斷請求,其撤除方法是不同的。1.定時器溢出中斷請求的撤除TF0和TF1是定時器溢出中斷標志位,它們因定時器溢出中斷請求的輸入而置位,因定時器溢出中斷得到響應而自動復位成0狀態(tài)。因此,定時器溢出中斷源的中斷請求是自動撤除的,用戶根本不必專門為它們撤除。

2.串行口中斷請求的撤除TI和RI是串行口中斷的標志位,中斷系統(tǒng)不能自動將它們撤除,這是因為MCS-51進入串行口中斷服務程序后常需要對它們進行檢測,以測定串行口發(fā)生了接收中斷還是發(fā)送中斷。為了防止CPU再次響應這類中斷,用戶應在中斷服務程序的適當位置處通過指令將它們撤除:CLRTI;撤除發(fā)送中斷

CLRRI;撤除接收中斷若采用字節(jié)指令,則也可采用如下指令:ANLSCON,#0FCH;撤除發(fā)送和接收中斷或采用位判斷清除指令:

JBCTI,rel;判斷TI標志是否置位,若置位則跳轉并撤除發(fā)送中斷

JBCRI,rel;判斷RI標志是否置位,若置位則跳轉并撤除接收中斷

3.外部中斷的撤除外部中斷請求有兩種觸發(fā)方式:電平觸發(fā)和負邊沿觸發(fā)。對于這兩種不同的中斷觸發(fā)方式,MCS-51撤除它們的中斷請求的方法是不相同的。在負邊沿觸發(fā)方式下,外部中斷標志IE0和IE1是依靠CPU兩次檢測

上觸發(fā)電平狀態(tài)而設置的。因此,芯片設計者使CPU在響應中斷時自動復位IE0或IE1,就可撤除

上的中斷請求,因為外部中斷源在中斷服務程序時是不可能再在

上產生負邊沿,而使相應的中斷標志IE0或IE1置位。

在電平觸發(fā)方式下,外部中斷標志IE0和IE1是依靠CUP檢測或上低電平而置位的。盡管CPU響應中斷時相應中斷標志IE0或IE1,能自動復位成0狀態(tài),但若外部中斷源不能及時撤除它在或上的低電平,就會再次使已經(jīng)變0的中斷IE0或IE1置位,這是絕對不允許的。因此,電平觸發(fā)型外部中斷請求的撤除必須使或上的低電平隨著其中斷被CPU響應而變?yōu)楦唠娖?。一種可供采用的電平型外部中斷的撤除電路如圖5-7所示。INT08051P1.0QDSDCP1外部中斷信號圖5-7電平型外部中斷的撤除電路由圖可見,當外部中斷源產生中斷請求時,D觸發(fā)器的復位成0狀態(tài),Q端的低電平被送到

,該低電平被8051檢測后就使中斷標志IE0置1。8051響應

上的中斷請求可使

中斷服務程序執(zhí)行,故可以在中斷服務程序開頭安排如下程序來使

上的電平拉高。INSVR:ORLP1,#01H

ANL

P1,#0FEH CLR

IE0

… END8051執(zhí)行上述程序就可使P1.0上產生一個寬度為兩個機器周期的負脈沖。在該負脈沖作用下,D觸發(fā)器被置位成1狀態(tài),

上的電平也因此而變高,從而撤除了其上的中斷請求。5.1.6中斷系統(tǒng)的初始化MCS-51中斷系統(tǒng)功能,是可以通過上述特殊功能寄存器進行統(tǒng)一管理的,中斷系統(tǒng)初始化是指對這些特殊功能的寄存器中各控制位進行賦值。中斷系統(tǒng)初始化步驟如下:1).置位相應中斷源的中斷允許;2).設定所有中斷源的中斷優(yōu)先級;

3).若為外部中斷,則應規(guī)定低電平還是負邊沿的中斷觸發(fā)方式。例如,用

為低電平觸發(fā)的中斷系統(tǒng)初始化程序。

1.采用位操作指令

SETBEA; SETBEX0;開

中斷

中斷 SETBPX0;令

高優(yōu)先級 CLRIT0;

電平觸發(fā)2.采用字節(jié)操作指令

MOVIE,#81H;開

中斷 ORLIP,#01H;令

為高優(yōu)先級

ORLTCON,#0FEH;令

電平觸發(fā)

顯然,采用位操作指令進行中斷系統(tǒng)初始化是比較簡單的。因為用戶不必記住各控制位在寄存器中的位置,只需按各控制位名稱來設置,而各控制位名稱是比較容易記憶的。5.2中斷的編程及應用實例

C51語言編譯器支持在C語言源程序中直接編寫51單片機的中斷服務函數(shù)程序,從而減輕了采用匯編語言編寫中斷服務程序的煩瑣程序。為了能在C語言源程序中直接編寫中斷服務函數(shù),C51語言編譯器對函數(shù)的定義有所擴展,增加了一個擴展關鍵字interrupt。關鍵字interrupt是函數(shù)定義時的一個選項,加上這個選項即可將函數(shù)定義成中斷服務函數(shù)。

定義中斷服務函數(shù)的一般形式為:

函數(shù)類型函數(shù)名(形式參數(shù)表)interruptn[usingm]interrupt后面的n是中斷號,n的取值范圍為0~31。編譯器從8n+3處產生中斷向量,具體的中斷號n和中斷向量取決于不同的51系列單片機芯片。對于MCS-51單片機而言,外部中斷0中斷、定時器/計數(shù)器0溢出中斷、外部中斷1中斷、定時器/計數(shù)器1溢出中斷、串行口發(fā)送/接收中斷對應的中斷號分別為0、1、2、3、4。using后面的m是選擇哪個工作寄存器區(qū),分別為0、1、2、3。

【例5-1】外部中斷在本實例中,首先通過P1.7口點亮發(fā)光二極管,然后外部輸入一脈沖串,則發(fā)光二極管亮、暗交替。電路如圖5-8所示。+5VP1.7AT89C51圖5-8發(fā)光二極管交替亮、暗

編寫程序如下:

#include<reg51.h>sbitP1_7=P1^7;voidinterrupt0(

)interrupt0using0//定義定時器0{ P1_7=!P1_7;}voidmain(

){ EA=1; //開中斷 IT0=1; //外部中斷0脈沖觸發(fā) EX0=1; //外部中斷0 P1_7=0; do

{

} while(1);}

【例5-2】如圖5-9所示,8只LED陰極接至單片機P0口,兩開關S0、S1分別接至單片機引腳P3.2和P3.3。

編寫程序控制LED狀態(tài):按下S0后,如果8只LED為熄滅狀態(tài),則點亮,如果8只LED為點亮狀態(tài),則保持;按下S1后,不管8只LED是熄滅狀態(tài)還是點亮狀態(tài),都變?yōu)殚W爍狀態(tài)。P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.78051

P3.2

P3.3…+5V圖5-9利用中斷控制發(fā)光二極管2講S0S1程序代碼如下:#include<reg51.h>voiddelay(unsignedintd)

//定義延時子函數(shù){ while(--d>0);}voidmain(){ P0=0xff; //熄滅LED EA=1; //開總中斷 EX0=1; //開外中斷0 EX1=1; //開外中斷1 IT0=1; //外中斷0脈沖觸發(fā)方式 IT1=1; //外中斷1脈沖觸發(fā)方式 for(;;) //延時等待中斷發(fā)生 {;}}

voidINT0_ISR(

)interrupt0//外中斷0中斷服務函數(shù){ P0=0x00; PX0=0; PX1=1;}voidINT1_ISR(

)interrupt2//外中斷1中斷服務函數(shù){ while(1) {

delay(5000);

P0=0x00;

delay(5000);

P0=0xff; }

}

在本例中,外中斷0、外中斷1均設為脈沖觸發(fā)方式,且為滿足功能要求。注意:中斷的優(yōu)先級別是不同的

【例5-3】利用外中斷控制外設的數(shù)據(jù)傳送如圖5-10所示,外設數(shù)據(jù)經(jīng)P1口輸入單片機,每準備好一個數(shù)據(jù),發(fā)出選通信號,使觸發(fā)器輸出1再經(jīng)非門得0至外中斷/INT0,向CPU發(fā)出中斷請求,CPU響應這個中斷請求后,在中斷處理程序中先撤除中斷請求信號,(通過P3.0=0,使/INT0=1),再由P1口輸入數(shù)據(jù)到單片機內部。P1P3.0INT0——8051選通信號1QCLRDCLK+5V數(shù)據(jù)

圖5-10利用中斷控制數(shù)傳送程序代碼如下:#include<reg51.h>unsignedchartemp; //定義臨時變量,來存取送到P1口的數(shù)據(jù)sbitP3_0=P3^0;

//定義位變量voidmain(

){ P3_0=1; //初始化外中斷0引腳,其為高電平 EA=1; //開總中斷 EX0=1; //開外中斷0 IT0=1; //外中斷脈沖觸發(fā)方式 for(;;) //延時等待中斷發(fā)生 {;}}voidINT0_ISR()interrupt0

//外中斷0中斷服務函數(shù){ P3_0=0; //恢復外中斷0引腳電平,除中斷請求信號 P1=0xff; //初始化P1 temp=P1; //讀取送至P1口的數(shù)據(jù) …}

MCS-51單片機的外部中斷源只有兩個,當需要擴展時,可以采用例5-4、例5-5、例5-6的方法進行外部中斷源的擴展。【例5-4】利用定時/計數(shù)器擴展外部中斷。利用定時/計數(shù)器擴展外部中斷源,是把定時/計數(shù)器溢出中斷做成外部中斷,即將定時/計數(shù)器設置為計數(shù)模式,然后把信號接到計數(shù)器相應的引腳上(T0或T1)。為了使每出現(xiàn)一個從高到低的脈沖時都產生一個中斷,可以把定時器設置為自動重裝模式,令重裝值為FFH。當計時器檢測到從高到低的脈沖時,定時器將溢出,這時將產生一個中斷請求。程序代碼如下:

#include<reg51.h>

voidmain(void){ ... TMOD=0x66; //兩個定時/計數(shù)器都設置成8位模式

TH1=0xff; //設定重裝值 TH0=0xff; TL0=0xff; TL1=0xff; TCON=0x50; //開始計數(shù) IE=0x9f; //中斷使能 ...}/******************************************定時器0中斷服務程序******************************************/voidtimer0_int(void)interrupt1{ ... } /******************************************定時器1中斷服務程序******************************************/voidtimer1_int(void)interrupt3{ while(!TI) {...}}

這種方法還是有一定的限制的。首先,它只能是邊沿觸發(fā),所以當需要的是一個電平觸發(fā)的中斷時,就要在中斷中不斷地對T0或T1進行采樣,直到它們變?yōu)楦?。其次,檢測到下降沿和產生終端之間一個指令周期的延時,這是因為在檢測到下降沿一個指令周期之后,計數(shù)器才加1。如果使用的8051單片機有多個定時器,而且有外部引腳,可以用這種方法來擴充邊沿觸發(fā)的外部中斷。值得重申的一點是,當使用定時器作為外部中斷時,它以前的功能將不能使用,除非用軟件對它進行復位?!纠?-5】利用外部中斷和查詢相結合的方法擴展外部中斷。

如果系統(tǒng)有多個外中斷請求源,可以按照它們的輕重緩急進行排隊,把其中最高級別的中斷源直接連接到單片機外中斷0輸入引腳,其余的外部中斷請求可以用利用邏輯器件通過“與”或者“或”的辦法連接到單片機外中斷1引腳,同時還連接到輸入/輸出端口(如P0或P1)的若干引腳,用來查詢判斷具體是哪一個中斷請求源發(fā)生的中斷事件。

如圖5-11所示,利用單片機擴展5個外部中斷源,中斷的優(yōu)先次序這S0~S4,其中S0接到外部中斷0上,S1~S4通過“與”門接到外部中斷1上;單片機的P1.4~P1.7接4個發(fā)光二極管用來作為輸出指示;當有S1~S4其中一個外部中斷發(fā)生時,相應的發(fā)光二極管VD1~VD4點亮;當S0外部中斷發(fā)生時,4個發(fā)光二極管全亮。8051S0S1S2S3S4INT0INT1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7&+5V+5VVD1VD2VD3VD4

圖5-11外部中斷擴展電路程序代碼如下:#include<reg51.h>sbitP1_0=P1^0; //定義位變量sbitP1_1=P1^1;...sbitP1_7=P1^7;voidmain(){ P1=0xff; //熄滅LED EA=1; //開總中斷 EX0=1; //開外中斷0 EX1=1; //開外中斷1 IT0=0; //外中斷0脈沖觸發(fā)方式 IT1=0; //外中斷1脈沖觸發(fā)方式 PX0=1; //外中斷0高優(yōu)先級 PX1=0; //外中斷1低優(yōu)先級 for(;;) //延時等待中斷發(fā)生 {;}}

voidINT0_ISP()interrupt0 //外中斷0服務函數(shù){ P1=0x0f;

//P1口高4位置0,點亮4個LED}voidINT1_ISR()interrupt2 //外中斷1服務函數(shù){ if(P1_0==0){P1=P1&0xef;} //點亮VD1 ... if(P1_3==0){P1=P1&0x7f;} //點亮VD4

}

【例5-6】利用優(yōu)先編碼器擴展外部中斷。從例5-5可以看出,利用與門、或門擴展外中斷所占端口引腳較多,在實際應用中,還可以采用優(yōu)先級解碼芯片如74LS148,把多個中斷源信號作為一個中斷。如圖5-12所示,在有8個中斷源的情況下,經(jīng)74LS148優(yōu)先譯碼后,只占3個I/O引腳,即用3根引腳可分辨8個中斷源,從而節(jié)省了I/O口資源。8051S0RX8+5VD0A0A1A2G74LS148P0.0P0.1P0.2INT0S1S2S3S4S5S6S7D1D2D3D4D5D6D7圖5-12利用優(yōu)先編碼器擴展外部中斷的電路

程序代碼如下:#include<reg51.h>unsignedcharstatus; //定義一變量,用來讀取P0口狀態(tài)voidmain(

){ EA=1; //開總中斷 EX0=1; //開外中斷0 PX0=1; //外中斷0高優(yōu)先級 for(;;) //延時等待中斷發(fā)生 {;}}voidINT0_ISR(

)interrupt0

//外中斷0中斷服務函數(shù){status=P0&0x07;

//讀取P0口低三位狀態(tài),不同的值

switch(status)//對應不同的中斷源 {

case0:

{ … //處理中斷源0 break;

} … case7:

{

… //處理中斷源7

break;

}}}【例5-7】中斷嵌套。

外部中斷/INT1觸發(fā)后,啟動計數(shù)器0。計數(shù)達到10次后停止計數(shù),啟動定時器1。由定時器1控制定時,由P1.7輸出周期為200ms的方波信號,接收兩次中斷后關閉方波發(fā)生器,P1.7置低。

程序如下:#include<reg51.h>#defineucharunsignedcharuchardatea,b,c;voidinterrupt0(

)interrupt2using1 //定義外部中斷1{ a++;}voidtimer0(

)interrupt1using2 //定義計數(shù)器0(T0){ TL0=0xff; b++;}voidtime1(

)interrupt3using3 //定義定時器1(T1){ TH1=0x06; c--;}sbitP1_7=P1^7;

voidmian(void){ P1_7=1;

//初始化 TCON=0x01;

//外部中斷為低電平觸發(fā)方式 TMOD=0x27;

//啟動定時器1和計數(shù)器0,工作方式2 IE=0x8b; //開中斷 a=0; do{

}

while(a!=1); //等待外部中斷 P1_7=!P1_7; //取反 TL0=0xff; //初值 TH0=0x06; //初值 b=0; TR0=0; //停止計數(shù)器0工作 TR1=1; //啟動定時器1

do

{ c=0xc8; do{}

while(c!=0);

//定時輸出方波 P1_7=!P1_7;

} while(a!=3); //等待兩次外部中斷 TR1=0; //關定時器1 P1_7=0; EA=0; //關總中斷 EX0=0; //禁止外部中斷 }

【例5-8】利用外部中斷實現(xiàn)發(fā)光二極管的簡單控制。本例將介紹一個中斷使用的演示程序,通過這個程序,讀者可以了解到各種中斷的使用方法。

程序如下:#include<reg51.h>sbitled0=P1^0; //定義I/O引腳sbitled1=P1^1;sbitled2=P1^2;sbitled3=P1^3;bitFINT0; //全局變量及位標志定義bitFINT1;bitFT0;bitFT1;bitFT2;unsignedcharT0_10ms;unsignedcharT0_50ms;unsignedcharT0_100ms;voidint_0(

); //函數(shù)聲明voidint_1(

);voidtimer_0(

);voidtimer_1(

);voidserial_1(

);voidtimer_2(

);

voidinitial(); //用戶函數(shù)聲明初始化

voidmain(void){ initial(

); while(1) { if(FINT0) //中斷0到,則進入循環(huán)體 { FINT0=0; led0=0; //中斷/INT0時燈點亮

led1=0; led2=0; led3=0; }

if(FINT1) //中斷1到,則進入循環(huán)體

{ FINT1=0;

led0=1; //中斷/INT1時燈熄滅 led1=1;

led2=1; led3=1; }

if(FT0) { FT0=0; if(++T0_10ms>30) {

T0_10ms=0; //未在初始化里設置定時器 } } }}

voidinitial(){ EA=1; //CPU所有中斷開 EX0=1; //中斷開

IT0=1; //低電平觸發(fā) EX1=1; //中斷開 IT1=1; //低電平觸發(fā) return;}

voidint_0()interrupt0using0 //中斷/INT0{ FINT0=1; }voidint_1()interrupt2using1 //中斷/INT2{ FINT1=1; }voidtimer_0()interrupt1using2 //定時器0中斷{ F

溫馨提示

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

最新文檔

評論

0/150

提交評論