單片機(jī)與嵌入式系統(tǒng)6_第1頁
單片機(jī)與嵌入式系統(tǒng)6_第2頁
單片機(jī)與嵌入式系統(tǒng)6_第3頁
單片機(jī)與嵌入式系統(tǒng)6_第4頁
單片機(jī)與嵌入式系統(tǒng)6_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、12022-6-18第六章第六章 單片機(jī)在某一時刻只能處理一個任務(wù),當(dāng)單片機(jī)在某一時刻只能處理一個任務(wù),當(dāng)多個任務(wù)同時要求單片機(jī)處理時,這一要求應(yīng)多個任務(wù)同時要求單片機(jī)處理時,這一要求應(yīng)該怎么實現(xiàn)呢?該怎么實現(xiàn)呢? 通過中斷可以實現(xiàn)多個任務(wù)的資源共享。通過中斷可以實現(xiàn)多個任務(wù)的資源共享。 22022-6-186.1 中斷的概念中斷的概念6.2 MCS-51中斷系統(tǒng)中斷系統(tǒng)6.3 中斷程序設(shè)計中斷程序設(shè)計 第六章第六章 32022-6-186.1 中斷的概念中斷的概念執(zhí)行主程序執(zhí)行主程序 中斷信號中斷信號INTx=0 中斷請求中斷請求暫停執(zhí)行主程序暫停執(zhí)行主程序 中斷響應(yīng)中斷響應(yīng)當(dāng)前當(dāng)前PC值入

2、棧值入棧 保護(hù)斷點(diǎn)保護(hù)斷點(diǎn)執(zhí)行中斷程序執(zhí)行中斷程序 中斷服務(wù)中斷服務(wù)返回主程序返回主程序 中斷返回中斷返回某人看書某人看書電話鈴響電話鈴響暫??磿鴷和?磿鴷凶饔浱枙凶饔浱栯娫捦ㄔ掚娫捦ㄔ捓^續(xù)看書繼續(xù)看書日常事務(wù)程序日常事務(wù)程序中斷服務(wù)程序中斷服務(wù)程序42022-6-18中斷的過程中斷的過程調(diào)用中斷過程調(diào)用中斷過程 中斷嵌套過程中斷嵌套過程52022-6-186.2 MCS-51中斷系統(tǒng)中斷系統(tǒng)一、中斷源一、中斷源二、中斷的控制二、中斷的控制三、中斷入口地址與中斷過程三、中斷入口地址與中斷過程62022-6-188051CPU有有5個可屏蔽中斷源(個可屏蔽中斷源(8052有有6個)。分個)。

3、分2個中斷個中斷優(yōu)先等級,允許實現(xiàn)二級中斷嵌套。優(yōu)先等級,允許實現(xiàn)二級中斷嵌套。 一、中斷源一、中斷源單片機(jī)單片機(jī)INT0或或 外部輸入中斷源外部輸入中斷源INT0(P3.2)INT1或或 外部輸入中斷源外部輸入中斷源INT1(P3.3)T0 片內(nèi)定時器片內(nèi)定時器T0的溢出的溢出T1 片內(nèi)定時器片內(nèi)定時器T1的溢出的溢出串行口串行口 片內(nèi)串行口發(fā)送片內(nèi)串行口發(fā)送TI或接收或接收RI中斷源中斷源72022-6-18中斷標(biāo)志位中斷標(biāo)志位CPU主主程程序序INT0INT1T0T1串口串口IE0TF0IE1TF1TIRI中斷源中斷源中斷標(biāo)志位中斷標(biāo)志位 每一個中斷源都有相應(yīng)的中斷標(biāo)志位;每一個中斷源都

4、有相應(yīng)的中斷標(biāo)志位; 中斷源申請中斷,相應(yīng)中斷標(biāo)志位置中斷源申請中斷,相應(yīng)中斷標(biāo)志位置1。82022-6-18中斷允許中斷允許CPU主主程程序序INT0INT1T0T1串口串口IE0TF0IE1TF1TIRI中斷源中斷源中斷標(biāo)志位中斷標(biāo)志位 每一個中斷源還有相應(yīng)的中斷允許位,每一個中斷源還有相應(yīng)的中斷允許位,1允許,允許,0禁止。禁止。 EA總中斷允許位,總中斷允許位,1開放所有中斷,開放所有中斷,0禁止所有中斷;禁止所有中斷;中斷允許中斷允許ESET0EX0EX1ET1EA92022-6-18中斷系統(tǒng)結(jié)構(gòu)圖中斷系統(tǒng)結(jié)構(gòu)圖102022-6-18中斷控制寄存器中斷控制寄存器二、中斷的控制二、中斷

5、的控制112022-6-18 申請中斷的所有標(biāo)志位均分別設(shè)在特殊功能寄存申請中斷的所有標(biāo)志位均分別設(shè)在特殊功能寄存器器TCON和和SCON中。中。(1)TCON中的標(biāo)志位(計數(shù)中的標(biāo)志位(計數(shù)/定時)定時)二、中斷的控制二、中斷的控制122022-6-18 TF1 TF0 IE1 IT1 IE0 IT0TCON 88H外部中斷外部中斷INT1中斷標(biāo)志位中斷標(biāo)志位(TCON.3) :INT1引腳有有效中引腳有有效中斷時,斷時, IE1由硬件置由硬件置1,中斷中斷響應(yīng)完成轉(zhuǎn)向中斷服務(wù)程序時響應(yīng)完成轉(zhuǎn)向中斷服務(wù)程序時,由硬件清零由硬件清零。 外部中斷外部中斷INT1觸發(fā)方式控制觸發(fā)方式控制位位(TC

6、ON.2): IT1=0,電平觸發(fā)方式,電平觸發(fā)方式 IT1=1, 下降沿觸發(fā)方式下降沿觸發(fā)方式T1溢出中斷標(biāo)志溢出中斷標(biāo)志(TCON.7): T1啟動計數(shù)后,計滿溢出啟動計數(shù)后,計滿溢出由硬件置位由硬件置位TF1=1,向,向CPU請求中斷,此標(biāo)志一直保持到請求中斷,此標(biāo)志一直保持到CPU響應(yīng)中斷后,才由響應(yīng)中斷后,才由硬件自動清硬件自動清0。也可用軟。也可用軟件查詢該標(biāo)志,并由軟件清件查詢該標(biāo)志,并由軟件清0。132022-6-18(2)SCON中的中斷標(biāo)志位(串口)中的中斷標(biāo)志位(串口)位地址位地址9FH9EH9DH9CH9BH9AH99H98H位符號位符號TIRI TI串口發(fā)送中斷請求標(biāo)

7、志位串口發(fā)送中斷請求標(biāo)志位 當(dāng)發(fā)送完一幀串行數(shù)據(jù)后,當(dāng)發(fā)送完一幀串行數(shù)據(jù)后,由硬件置由硬件置“1”;在轉(zhuǎn)向中斷;在轉(zhuǎn)向中斷服務(wù)程序后,服務(wù)程序后,用軟件清用軟件清“0”。 RI串行口接收中斷請求標(biāo)志位串行口接收中斷請求標(biāo)志位 當(dāng)接收完一幀串行數(shù)據(jù)后,當(dāng)接收完一幀串行數(shù)據(jù)后,由硬件置由硬件置“1”;在轉(zhuǎn)向中斷;在轉(zhuǎn)向中斷服務(wù)程序后,服務(wù)程序后,用軟件清用軟件清“0”。142022-6-18(3)中斷允許寄存器)中斷允許寄存器IE8051系統(tǒng)復(fù)位后,系統(tǒng)復(fù)位后,IE中各位均被清中各位均被清0,即禁止所有中斷。,即禁止所有中斷。例如,如果要打開定時例如,如果要打開定時/計數(shù)器計數(shù)器0和串口的中斷,程

8、序可以寫成:和串口的中斷,程序可以寫成: SETB ET0 ;使;使ET0=1,允許,允許T0中斷中斷 SETB ES ;使;使ES=1,允許串口中斷,允許串口中斷 SETB EA ;使;使EA=1,總允許中斷必須打開,總允許中斷必須打開位地址位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符號位符號EA/ESET1EX1ET0EX0* EA中斷允許總控制位中斷允許總控制位* EX0和和EX1外部中斷允許控制位外部中斷允許控制位* ET0和和ET1定時器定時器/計數(shù)器中斷允許控制位計數(shù)器中斷允許控制位* ES串行中斷允許控制位串行中斷允許控制位152022-6-18(4

9、)中斷源優(yōu)先級設(shè)定寄存器)中斷源優(yōu)先級設(shè)定寄存器IP 51單片機(jī)有兩個中斷優(yōu)先級單片機(jī)有兩個中斷優(yōu)先級高級和低級高級和低級 IP為中斷優(yōu)先級寄存器,用戶可用為中斷優(yōu)先級寄存器,用戶可用軟件設(shè)定軟件設(shè)定 相應(yīng)位為相應(yīng)位為1,對應(yīng)的中斷源被設(shè)置為,對應(yīng)的中斷源被設(shè)置為高優(yōu)先級高優(yōu)先級,為,為0,低優(yōu)先,低優(yōu)先級級 系統(tǒng)系統(tǒng)復(fù)位復(fù)位時,全部時,全部清零清零,均為低優(yōu)先級,均為低優(yōu)先級162022-6-18中斷系統(tǒng)結(jié)構(gòu)圖中斷系統(tǒng)結(jié)構(gòu)圖172022-6-18 MCS-51對同級中斷源的優(yōu)先權(quán)規(guī)定對同級中斷源的優(yōu)先權(quán)規(guī)定 低優(yōu)先級中斷請求不能打斷高優(yōu)先級的中斷服務(wù);但低優(yōu)先級中斷請求不能打斷高優(yōu)先級的中斷

10、服務(wù);但高級可以打高級可以打斷低級斷低級,實現(xiàn)中斷嵌套。,實現(xiàn)中斷嵌套。 如果一個中斷請求已被響應(yīng),則同級的其它中斷服務(wù)將被禁止。如果一個中斷請求已被響應(yīng),則同級的其它中斷服務(wù)將被禁止。即即同級不能嵌套同級不能嵌套。 如果同級的多個中斷同時出現(xiàn),則按如果同級的多個中斷同時出現(xiàn),則按CPU查詢次序確定哪個中查詢次序確定哪個中斷請求被響應(yīng)。其查詢次序為:外部中斷斷請求被響應(yīng)。其查詢次序為:外部中斷0定時中斷定時中斷0外部中斷外部中斷1定時中斷定時中斷1串行中斷。串行中斷。 182022-6-18 例如:例如:某應(yīng)用系統(tǒng)設(shè)置了三種中斷源;串口、某應(yīng)用系統(tǒng)設(shè)置了三種中斷源;串口、T1和和INT0,并使

11、優(yōu)先權(quán)順序為,并使優(yōu)先權(quán)順序為T1最高,最高,INT0次之,串口次之,串口最低。最低。 對這樣的系統(tǒng),只要把優(yōu)先級控制寄存器對這樣的系統(tǒng),只要把優(yōu)先級控制寄存器IP的的PT1位置位置“1”就可以實現(xiàn)了。就可以實現(xiàn)了。 MOV IP,#08H ;00001000B,即,即PT1=1 在這種設(shè)置中,在這種設(shè)置中,PT1=1,使,使T1處在高級優(yōu)先中,其它中斷處在高級優(yōu)先中,其它中斷源都處于低級優(yōu)先權(quán)中,且因在同級中源都處于低級優(yōu)先權(quán)中,且因在同級中INT0最高。所以滿足:最高。所以滿足:PX1(T1) PX0(INT0) PS(串行口串行口)的優(yōu)先順序。的優(yōu)先順序。 192022-6-18三、三、

12、MCS-51中斷入口地址與中斷過程中斷入口地址與中斷過程外部中斷外部中斷0 0入口地址入口地址0003HLJMP ZD0 例:例:202022-6-18程序存儲器程序存儲器ROM0000H:復(fù)位后,程序的入口地址復(fù)位后,程序的入口地址(PC=0000H)0023H:串口中斷入口串口中斷入口0003H:INT0中斷入口中斷入口000BH:T0中斷入口中斷入口0013H:INT1入口入口001BH:T1中斷入口中斷入口002AH ORG 0000H LJMP MAIN ORG 0003H LJMP INTR MAIN: ;主程序;主程序 SJMP $ INTR: ;中斷服務(wù)程序;中斷服務(wù)程序 RE

13、TI END RETI指令功能:指令功能:把斷點(diǎn)地址把斷點(diǎn)地址取出送回到取出送回到PC;通知中斷系;通知中斷系統(tǒng)已完成中斷處理,將清除統(tǒng)已完成中斷處理,將清除優(yōu)先級狀態(tài)觸發(fā)器。優(yōu)先級狀態(tài)觸發(fā)器。決不能用決不能用RET替換替換!中斷向量表(指令型)中斷向量表(指令型)212022-6-18中斷響應(yīng)過程中斷響應(yīng)過程1. 中斷采樣(僅對外部中斷)中斷采樣(僅對外部中斷) 電平觸發(fā)方式(電平觸發(fā)方式(IT0/IT10)的外部中斷請求采樣到低電)的外部中斷請求采樣到低電平時,平時,IE0/IE1由硬件自動置由硬件自動置“1”,表明有外中斷請求發(fā)生。,表明有外中斷請求發(fā)生。 脈沖觸發(fā)式(脈沖觸發(fā)式(IT0

14、/IT11)的外中斷請求采樣到由高電平)的外中斷請求采樣到由高電平變?yōu)榈碗娖綍r,則變?yōu)榈碗娖綍r,則IE0/IE1由硬件自動置由硬件自動置“1”。2. 中斷查詢中斷查詢在每個機(jī)器周期都要查詢在每個機(jī)器周期都要查詢TCON和和SCON中各中斷標(biāo)志位和中各中斷標(biāo)志位和允許位的狀態(tài),允許位的狀態(tài),按優(yōu)先級順序按優(yōu)先級順序查詢出該響應(yīng)的標(biāo)志位,硬件查詢出該響應(yīng)的標(biāo)志位,硬件產(chǎn)生一條調(diào)用指令,從下一機(jī)器周期開始進(jìn)行中斷響應(yīng)。產(chǎn)生一條調(diào)用指令,從下一機(jī)器周期開始進(jìn)行中斷響應(yīng)。 保護(hù)斷點(diǎn)地址;把程序轉(zhuǎn)向中斷服務(wù)程序的入口地址。保護(hù)斷點(diǎn)地址;把程序轉(zhuǎn)向中斷服務(wù)程序的入口地址。以上這些工作是硬件自動完成的!以上這

15、些工作是硬件自動完成的!3. 中斷響應(yīng)中斷響應(yīng)222022-6-18 并不是所有的請求都被響應(yīng),當(dāng)遇到下列情況之一時不并不是所有的請求都被響應(yīng),當(dāng)遇到下列情況之一時不響應(yīng)這些中斷請求:響應(yīng)這些中斷請求:(1)CPU正在處理一個同級或者高級的中斷服務(wù)正在處理一個同級或者高級的中斷服務(wù)(2)當(dāng)前指令還沒有執(zhí)行完畢)當(dāng)前指令還沒有執(zhí)行完畢(3)當(dāng)前指令是)當(dāng)前指令是RET、RETI或者是訪問或者是訪問IP、IE的指令,執(zhí)的指令,執(zhí)行完這些指令后,還必須再執(zhí)行一條指令,才響應(yīng)中斷請求。行完這些指令后,還必須再執(zhí)行一條指令,才響應(yīng)中斷請求。 中斷響應(yīng)阻中斷響應(yīng)阻斷斷232022-6-18中斷源發(fā)中斷請求

16、中斷源發(fā)中斷請求中斷響應(yīng)條件中斷響應(yīng)條件 是否滿足?是否滿足? 相應(yīng)中斷入口地址送入相應(yīng)中斷入口地址送入PC,轉(zhuǎn)向中斷服務(wù)程序轉(zhuǎn)向中斷服務(wù)程序N中斷是否受阻?中斷是否受阻?YY 把把PC斷點(diǎn)地址壓入堆棧斷點(diǎn)地址壓入堆棧N 由硬件由硬件自動完成自動完成中斷處理過程示意圖中斷處理過程示意圖242022-6-18 關(guān)中斷關(guān)中斷保護(hù)現(xiàn)場保護(hù)現(xiàn)場中斷服務(wù)中斷服務(wù) 開中斷開中斷 關(guān)中斷關(guān)中斷恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 開中斷開中斷中斷返回中斷返回斷點(diǎn)地址由堆棧彈入斷點(diǎn)地址由堆棧彈入PC保護(hù)和恢復(fù)現(xiàn)場之保護(hù)和恢復(fù)現(xiàn)場之后的開中斷是為了后的開中斷是為了允許有更高級中斷允許有更高級中斷打斷此中斷服務(wù)程打斷此中斷服務(wù)程序。

17、序。 中斷服務(wù)程序中斷服務(wù)程序硬件自硬件自動完成動完成保護(hù)現(xiàn)場和保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場的恢復(fù)現(xiàn)場的過程中不允過程中不允許中斷,以許中斷,以免現(xiàn)場遭到免現(xiàn)場遭到破壞。破壞。252022-6-18 CPU響應(yīng)某中斷請求后,在中斷返回前,應(yīng)該撤除該中斷響應(yīng)某中斷請求后,在中斷返回前,應(yīng)該撤除該中斷請求,否則會引起另一次中斷。請求,否則會引起另一次中斷。 定時器定時器0或或1溢出:溢出:CPU在響應(yīng)中斷后,硬件清除有關(guān)的中在響應(yīng)中斷后,硬件清除有關(guān)的中斷請求標(biāo)志斷請求標(biāo)志TF0或或TF1,即,即中斷請求是自動撤除中斷請求是自動撤除的。的。 邊沿激活的外部中斷:邊沿激活的外部中斷:CPU在響應(yīng)中斷后,也是在

18、響應(yīng)中斷后,也是用硬件自用硬件自動清除動清除有關(guān)的中斷請求標(biāo)志有關(guān)的中斷請求標(biāo)志IE0或或IE1。 串行口中斷:串行口中斷:CPU響應(yīng)中斷后,沒有用硬件清除響應(yīng)中斷后,沒有用硬件清除TI、RI,故這些中斷不能自動撤除,而故這些中斷不能自動撤除,而要軟件清除相應(yīng)的標(biāo)志。要軟件清除相應(yīng)的標(biāo)志。中斷請求的撤除中斷請求的撤除262022-6-18 在電平觸發(fā)方式中,在電平觸發(fā)方式中,CPU響應(yīng)中斷時不會自動清除響應(yīng)中斷時不會自動清除IE1或或IE0標(biāo)志,所以在響應(yīng)中斷后應(yīng)立即撤除標(biāo)志,所以在響應(yīng)中斷后應(yīng)立即撤除INT0或或INT1引腳引腳上的低電平。上的低電平。 在硬件上,在硬件上,CPU對對INT0

19、和和INT1引腳的信號不能控制,引腳的信號不能控制,所以要通過硬件額外添加所以要通過硬件額外添加D觸發(fā)器配合軟件來解決。觸發(fā)器配合軟件來解決。 一般不提倡外部中斷源選用低電平觸發(fā)方式。一般不提倡外部中斷源選用低電平觸發(fā)方式。電平激活的外部中斷源中斷標(biāo)志的撤除電平激活的外部中斷源中斷標(biāo)志的撤除直 接 置直 接 置位端位端ORL P1 ,#01H ; P1輸出高電平輸出高電平ANL P1 ,#0FEH ;P1 輸出輸出低電平低電平272022-6-1851單片機(jī)需要多個外部中斷源時,如單片機(jī)需要多個外部中斷源時,如何進(jìn)行擴(kuò)展?何進(jìn)行擴(kuò)展?一、利用用一、利用用T0和和T1外部計數(shù)脈沖擴(kuò)展外部計數(shù)脈沖

20、擴(kuò)展 以以T0T0為例,將其設(shè)為計數(shù)器功能模式、方式為例,將其設(shè)為計數(shù)器功能模式、方式2 2(自動(自動重復(fù)裝載初值),賦初值為重復(fù)裝載初值),賦初值為255255,這樣外部引腳,這樣外部引腳T0T0(P3.4P3.4)每送入一個脈沖,就使計數(shù)器產(chǎn)生一次溢出中斷。每送入一個脈沖,就使計數(shù)器產(chǎn)生一次溢出中斷。282022-6-18二、利用并口擴(kuò)展(類似于觸鍵中斷功能)二、利用并口擴(kuò)展(類似于觸鍵中斷功能) 任一按鍵按下,都會通過或非門產(chǎn)生一個外部中斷,任一按鍵按下,都會通過或非門產(chǎn)生一個外部中斷,在中斷服務(wù)子程序中進(jìn)一步通過查詢判斷是哪一路中斷,在中斷服務(wù)子程序中進(jìn)一步通過查詢判斷是哪一路中斷,

21、查詢順序決定優(yōu)先級。查詢順序決定優(yōu)先級。292022-6-18三、利用專用中斷控制器三、利用專用中斷控制器8259擴(kuò)展擴(kuò)展302022-6-18312022-6-186.3 中斷程序設(shè)計中斷程序設(shè)計一、硬件電路一、硬件電路二、整個程序的設(shè)計功能二、整個程序的設(shè)計功能三、中斷程序的任務(wù)三、中斷程序的任務(wù) 設(shè)計中斷服務(wù)程序往往要考慮:設(shè)計中斷服務(wù)程序往往要考慮:(1 1)設(shè)置中斷允許控制寄存器)設(shè)置中斷允許控制寄存器IEIE的相應(yīng)標(biāo)志位;的相應(yīng)標(biāo)志位;(2 2)設(shè)置中斷優(yōu)先級寄存器)設(shè)置中斷優(yōu)先級寄存器IPIP的相應(yīng)位,確定并分配所使用的相應(yīng)位,確定并分配所使用 的中斷源優(yōu)先級;的中斷源優(yōu)先級;(

22、3 3)若是外部中斷源,還要設(shè)置中斷請求的觸發(fā)方式)若是外部中斷源,還要設(shè)置中斷請求的觸發(fā)方式IT0IT0或或 IT1IT1,以滿足硬件電路提供的中斷方式;,以滿足硬件電路提供的中斷方式;(4 4)編寫中斷服務(wù)程序,處理中斷要求。)編寫中斷服務(wù)程序,處理中斷要求。 322022-6-18 ORG 0000H ;上電或復(fù)位入口地址;上電或復(fù)位入口地址 LJMP TO_MAIN ;無條件轉(zhuǎn)移到主程序;無條件轉(zhuǎn)移到主程序 ORG 0003H ;外部中斷;外部中斷0入口地址入口地址 LJMP TO_INT0 ;跳到外部中斷;跳到外部中斷0中斷服務(wù)程序處中斷服務(wù)程序處 ORG 001BH ;定時;定時/

23、計數(shù)器計數(shù)器1入口地址入口地址 LJMP TO_T1 ;跳到定時;跳到定時/計數(shù)器計數(shù)器1的中斷服務(wù)程序處的中斷服務(wù)程序處 ORG 0023H ;串口中斷入口地址;串口中斷入口地址 LJMP TO_SBUF ;跳到串口中斷服務(wù)程序處;跳到串口中斷服務(wù)程序處 例如,有外部中斷例如,有外部中斷0,、定時計數(shù)器、定時計數(shù)器1、串口三個中斷源,要、串口三個中斷源,要求求T1優(yōu)先級最高,優(yōu)先級最高,INT0優(yōu)先級最低且為下降沿觸發(fā)。程序優(yōu)先級最低且為下降沿觸發(fā)。程序結(jié)構(gòu)為:結(jié)構(gòu)為:332022-6-18 ORG 0100H ;程序區(qū);程序區(qū) ;-外部中斷外部中斷0中斷服務(wù)程序中斷服務(wù)程序- TO_INT

24、0: ;處理中斷;處理中斷 RETI ;返回主程序;返回主程序 ;-定時定時/計數(shù)器計數(shù)器1的中斷服務(wù)程序的中斷服務(wù)程序- TO_T0: ;處理中斷;處理中斷 RETI ;返回主程序;返回主程序 342022-6-18 ;-串口中斷服務(wù)程序串口中斷服務(wù)程序- TO_SBUF: JB TI,TO_WIRE CLR RI ;清除;清除RI標(biāo)志標(biāo)志 ;收串口數(shù)據(jù);收串口數(shù)據(jù) SJMP TO_END TO_WIRE:CLR TI ;清除;清除TI標(biāo)志標(biāo)志 ;發(fā)串口數(shù)據(jù);發(fā)串口數(shù)據(jù) TO_END: RETI ;返回主程序;返回主程序352022-6-18 ;-主程序部分主程序部分- TO_MAIN:MO

25、V SP,#70H ;設(shè)堆棧區(qū)首址;設(shè)堆棧區(qū)首址 SETB ET1 ;允許定時;允許定時/計數(shù)器計數(shù)器1中斷中斷 SETB EX0 ;允許外部中斷;允許外部中斷0中斷中斷 SETB ES ;允許串口中斷;允許串口中斷 SETB IT0 ;設(shè);設(shè)INT0為下降沿觸發(fā)為下降沿觸發(fā) SETB PT1 ;設(shè);設(shè)T1為最高優(yōu)先權(quán)為最高優(yōu)先權(quán) SETB PS ;設(shè)串口為較高優(yōu)先權(quán);設(shè)串口為較高優(yōu)先權(quán) SETB EA ;打開總的中斷開關(guān);打開總的中斷開關(guān) ;主程序;主程序 END TO_MAIN 362022-6-18n C51編譯器僅僅需要關(guān)心編譯器僅僅需要關(guān)心中斷號中斷號和和寄存器組寄存器組的選擇,編的

26、選擇,編譯器會自動產(chǎn)生中斷向量和程序的入棧及出棧代碼。譯器會自動產(chǎn)生中斷向量和程序的入棧及出棧代碼。n 在在函數(shù)聲明函數(shù)聲明時包括時包括interrupt,將把所聲明的函數(shù)定義,將把所聲明的函數(shù)定義為一個中斷服務(wù)程序。為一個中斷服務(wù)程序。n 可以使用可以使用using定義此中斷服務(wù)程序所使用的定義此中斷服務(wù)程序所使用的寄存器組寄存器組。C51C51中斷服務(wù)程序的設(shè)計結(jié)構(gòu)中斷服務(wù)程序的設(shè)計結(jié)構(gòu)void 函數(shù)名函數(shù)名(void) interrupt n using m372022-6-18C51C51中斷服務(wù)程序的設(shè)計結(jié)構(gòu)中斷服務(wù)程序的設(shè)計結(jié)構(gòu) interrupt后面的后面的n是中斷號,是中斷號,

27、n的取值范圍為的取值范圍為031,編譯器從,編譯器從8n+3處產(chǎn)生中斷向量。處產(chǎn)生中斷向量。 using 后面的后面的m是所選擇的寄存器組,取值范圍是所選擇的寄存器組,取值范圍03,該項可以省,該項可以省略,編譯器自動選擇寄存器組。略,編譯器自動選擇寄存器組。 如果在中斷函數(shù)中調(diào)用了其它函數(shù),則被調(diào)用函數(shù)所用的寄存器組如果在中斷函數(shù)中調(diào)用了其它函數(shù),則被調(diào)用函數(shù)所用的寄存器組必須與中斷函數(shù)相同必須與中斷函數(shù)相同,所以使用,所以使用using時必須十分小心,要保證任何寄時必須十分小心,要保證任何寄存器組的切換都只在自己控制的區(qū)域內(nèi)發(fā)生,否則將產(chǎn)生不正確的函存器組的切換都只在自己控制的區(qū)域內(nèi)發(fā)生,

28、否則將產(chǎn)生不正確的函數(shù)結(jié)果。數(shù)結(jié)果。void 函數(shù)名函數(shù)名(void) interrupt n using m382022-6-18 # include /包含包含C51的頭文件的頭文件 sbit P17=P17; /定義定義P1.7引腳引腳 void main (void) /主函數(shù)部分主函數(shù)部分 P17=0 ; /使使P1.7輸出低電平輸出低電平 EX0 =1; /允許外部中斷允許外部中斷0中斷中斷 EA =1 ; /開中斷開中斷 IT0=1; /下降沿觸發(fā)下降沿觸發(fā) while(1); /等待等待 void int0_func(void) interrupt 0 /外部中斷外部中斷0處理

29、函數(shù)處理函數(shù) P17 = P17 ; /使使P1.7引腳電平翻轉(zhuǎn)引腳電平翻轉(zhuǎn) 在這個例子中,在這個例子中,using缺省,寄存器組由編譯器給定。缺省,寄存器組由編譯器給定。例如,例如,當(dāng)外部中斷當(dāng)外部中斷0有信號輸入時,使有信號輸入時,使P1.7引腳電平引腳電平翻轉(zhuǎn)。程序如下:翻轉(zhuǎn)。程序如下:392022-6-18例例,模擬統(tǒng)計人數(shù)電路如圖所示。光發(fā)射電路中的模擬統(tǒng)計人數(shù)電路如圖所示。光發(fā)射電路中的V1是紅外發(fā)射二極管是紅外發(fā)射二極管,R1是限流電阻,當(dāng)開關(guān)是限流電阻,當(dāng)開關(guān)SW閉合后,在閉合后,在3V電源的激勵下電源的激勵下V1會發(fā)出較強(qiáng)會發(fā)出較強(qiáng)的紅外光。的紅外光。V2是紅外接收管,經(jīng)是紅

30、外接收管,經(jīng)U1反相后,信號加在了反相后,信號加在了INT1管腳上,管腳上,LED1LED8是狀態(tài)指示發(fā)光管。在這個電路中,當(dāng)有人通過是狀態(tài)指示發(fā)光管。在這個電路中,當(dāng)有人通過“過人通道過人通道”時,在時,在INT1管腳上就會得到一個完整的正負(fù)脈沖,從而就可以利用外管腳上就會得到一個完整的正負(fù)脈沖,從而就可以利用外部中斷的方式進(jìn)行計數(shù)。由于電路本身的特點(diǎn),可以用邊沿觸發(fā)申請中斷部中斷的方式進(jìn)行計數(shù)。由于電路本身的特點(diǎn),可以用邊沿觸發(fā)申請中斷。402022-6-18COUNT_L EQU 30H;設(shè)定計數(shù)單元低字節(jié);設(shè)定計數(shù)單元低字節(jié)COUNT_H EQU 31H;設(shè)定計數(shù)單元高字節(jié);設(shè)定計數(shù)單元高字節(jié) KEY BIT P1.7;定義按鍵;定義按鍵 ORG 0000H;復(fù)位入口地址;復(fù)位入口地址 LJMP C_MAIN;轉(zhuǎn)到主程序;轉(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論