接口技術(shù)—中斷_第1頁
接口技術(shù)—中斷_第2頁
接口技術(shù)—中斷_第3頁
接口技術(shù)—中斷_第4頁
接口技術(shù)—中斷_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、要求: 1、掌握MCS-51單片機的5個中斷源 2、掌握MCS-51單片機接受中斷必須設(shè)置的三個寄存器TCON、 IE、IP 3、掌握MCS-51單片機5個中斷程序的入口地址表 4、會編寫較簡單的中斷程序。第第5 5章章 MCS-51MCS-51的中斷系統(tǒng)的中斷系統(tǒng)5.1 中斷的概念 什么是中斷? 中斷是指CPU暫時中止它正在執(zhí)行的主程序,轉(zhuǎn)去執(zhí)行請求中斷的那個外設(shè)的中斷服務(wù)程序,處理完畢后,又返回主程序的過程。 子程序的調(diào)用是固定的,而中斷程序的執(zhí)行是隨機的。圖圖5-15-1所示。對事件的整個處理過程,稱為所示。對事件的整個處理過程,稱為中斷處中斷處理理(或中斷服務(wù)或中斷服務(wù))。能夠?qū)崿F(xiàn)中斷

2、處理功能的部件稱為能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng)中斷系統(tǒng);產(chǎn)生中;產(chǎn)生中斷的請求源稱為斷的請求源稱為中斷請求源中斷請求源。中斷源向中斷源向CPUCPU提出的處理請求,稱為提出的處理請求,稱為中斷請求中斷請求( (或或中斷中斷申請申請) )。進入中斷進入中斷保護現(xiàn)場保護現(xiàn)場中斷處理恢復(fù)現(xiàn)場中斷處理恢復(fù)現(xiàn)場 中斷返回中斷返回中斷方式中斷方式優(yōu)點優(yōu)點:大大地提高了大大地提高了CPUCPU的工作效率的工作效率。5.2 5.2 MCS-51MCS-51中斷系統(tǒng)的結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu)有有5 5個中斷請求源,兩個中斷優(yōu)先級,可兩級嵌套。個中斷請求源,兩個中斷優(yōu)先級,可兩級嵌套。中斷系統(tǒng)結(jié)構(gòu)示意圖中斷系

3、統(tǒng)結(jié)構(gòu)示意圖如下圖所示。如下圖所示。 中斷的過程分為以下幾步 1、中斷源進行中斷申請(MCS-51有5個中斷源) INT0 INT1 T0 T1 串行口 使對應(yīng)的中斷請求標(biāo)志置1 2、系統(tǒng)接受中斷申請 MCS-51系統(tǒng)接受中斷申請受4個特殊功能寄存器控制 TCON 定時控制寄存器 SCON 串行口控制寄存器 IE 中斷使能寄存器 IP 中斷優(yōu)先權(quán)寄存器 3、轉(zhuǎn)去執(zhí)行中斷服務(wù)程序(通過中斷程序入口表) P45 4、中斷返回 RETI 中斷請求中斷請求標(biāo)志位標(biāo)志位串行口控串行口控制寄存器制寄存器中斷請求中斷請求標(biāo)志位標(biāo)志位中斷允許中斷允許寄存器寄存器中斷優(yōu)先中斷優(yōu)先級寄存器級寄存器外部中斷申請外部

4、中斷申請0 0外部中斷申請外部中斷申請1 1定時器定時器/ /計數(shù)器計數(shù)器0 0定時器定時器/ /計數(shù)器計數(shù)器1 1串行口發(fā)串行口發(fā)送送/ /接收接收5.3 5.3 中斷請求源中斷請求源五個中斷請求源五個中斷請求源 :(1 1)INT0INT0* *外部中斷請求外部中斷請求0 0,由引腳,由引腳P3.2 INT0P3.2 INT0* *輸輸入,中斷請求標(biāo)志為入,中斷請求標(biāo)志為IE0IE0。(2 2)INT1INT1* *外部中斷請求外部中斷請求1 1,由引腳,由引腳P3.3 INT1P3.3 INT1* *輸輸入,中斷請求標(biāo)志為入,中斷請求標(biāo)志為IE1IE1。(3 3)定時器定時器/ /計數(shù)器

5、計數(shù)器T0T0溢出溢出中斷請求,中斷請求標(biāo)志中斷請求,中斷請求標(biāo)志為為TF0TF0。(4 4)定時器定時器/ /計數(shù)器計數(shù)器T1T1溢出溢出中斷請求,中斷請求標(biāo)志中斷請求,中斷請求標(biāo)志為為TF1TF1。(5 5)串行口中斷請求串行口中斷請求,中斷請求標(biāo)志為,中斷請求標(biāo)志為TITI或或RIRI。 由特殊功能寄存器由特殊功能寄存器TCONTCON和和SCONSCON的相應(yīng)位鎖存。的相應(yīng)位鎖存。中斷程序入口地址中斷程序入口地址五個中斷程序的入口地址為:五個中斷程序的入口地址為:外中斷外中斷0 0(INT0INT0) :0003H0003H定時器定時器0 0(T0T0) :000BH000BH外中斷外

6、中斷1 1(INT1INT1) :0013H0013H定時器定時器1 1(T1T1) :001BH001BH串行口(串行口(RI/TIRI/TI) :0023H0023H5.4 5.4 與中斷有關(guān)的特殊功能寄存器與中斷有關(guān)的特殊功能寄存器SFRSFR MCS-51 MCS-51共有共有2121個特殊功能寄存器個特殊功能寄存器SFRSFR,與中斷有,與中斷有關(guān)的關(guān)的SFRSFR共有共有4 4個,它們?yōu)槎〞r器控制寄存器個,它們?yōu)槎〞r器控制寄存器TCONTCON、串、串行口控制寄存器行口控制寄存器SCONSCON、中斷允許寄存器、中斷允許寄存器IEIE、中斷優(yōu)先、中斷優(yōu)先權(quán)寄存器權(quán)寄存器IPIP。簡

7、下表。簡下表。1 1、TCONTCON為定時器為定時器/ /計數(shù)器的控制寄存器計數(shù)器的控制寄存器 字節(jié)地址為字節(jié)地址為8888H H。包含:包含:(1 1)T0T0和和T1T1的溢出中斷請求標(biāo)志位的溢出中斷請求標(biāo)志位TF1TF1和和TF0TF0(2 2)外部中斷請求標(biāo)志位外部中斷請求標(biāo)志位IE1IE1與與IE0IE0。格式如下所示:格式如下所示:各標(biāo)志位的功能:各標(biāo)志位的功能: (1 1)IT0IT0選擇外部中斷請求選擇外部中斷請求0 0為跳沿觸發(fā)方式還是電為跳沿觸發(fā)方式還是電平觸發(fā)方式:平觸發(fā)方式: IT0=0 IT0=0,為為電平觸發(fā)電平觸發(fā)方式。方式。 IT0=1IT0=1,為為跳沿觸發(fā)

8、跳沿觸發(fā)方式。方式。 可由軟件置可由軟件置“1 1”或清或清“0 0”。(2 2)IE0IE0外部中斷請求外部中斷請求0 0的中斷請求標(biāo)志位。的中斷請求標(biāo)志位。 IE0=0 IE0=0,無中斷請求無中斷請求。 IE0=1 IE0=1,外部中斷外部中斷0 0有中斷請求。當(dāng)有中斷請求。當(dāng)CPUCPU響應(yīng)該中斷,響應(yīng)該中斷,轉(zhuǎn)向中斷服務(wù)程序時,由硬件清轉(zhuǎn)向中斷服務(wù)程序時,由硬件清“0 0”IE0IE0。(3 3)IT1IT1外部中斷請求外部中斷請求1 1為跳沿觸發(fā)方式還是電平為跳沿觸發(fā)方式還是電平觸發(fā)方式,意義與觸發(fā)方式,意義與IT0IT0類似。類似。(4 4)IE1IE1外部中斷請求外部中斷請求1

9、 1的中斷請求標(biāo)志位,意義的中斷請求標(biāo)志位,意義與與IE0IE0類似。類似。(5 5)TF0TF0T0T0溢出中斷請求標(biāo)志位。溢出中斷請求標(biāo)志位。T0T0計數(shù)后,溢出時,由硬件置計數(shù)后,溢出時,由硬件置“1 1”TF0TF0,向向CPUCPU申請申請中斷,中斷,CPUCPU響應(yīng)響應(yīng)TF0TF0中斷時,中斷時,硬件自動清硬件自動清“0 0”TF0TF0,TF0TF0也可由軟件清也可由軟件清0 0。(6 6)TF1TF1T1T1的溢出中斷請求標(biāo)志位,功能和的溢出中斷請求標(biāo)志位,功能和TF0TF0類類似。似。 TR1 TR1、TR0 TR0 2 2個位與中斷無關(guān)。個位與中斷無關(guān)。 當(dāng)當(dāng)MCS-51M

10、CS-51復(fù)位后復(fù)位后,TCONTCON被清被清0 0,則,則CPUCPU關(guān)中斷,關(guān)中斷,所有中所有中斷請求被禁止。斷請求被禁止。2 2、SCONSCON為串行口控制寄存器為串行口控制寄存器 字節(jié)地址為字節(jié)地址為9898H H。串行口的。串行口的發(fā)送中斷發(fā)送中斷和和接收中斷接收中斷的中的中斷請求標(biāo)志斷請求標(biāo)志TITI和和RIRI,格式如下:格式如下:各標(biāo)志位的功能:各標(biāo)志位的功能: (1 1)TITI發(fā)送中斷請求標(biāo)志位。串口每發(fā)送完一幀發(fā)送中斷請求標(biāo)志位。串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動置串行數(shù)據(jù)后,硬件自動置“1 1”TITI。必須在中斷服務(wù)必須在中斷服務(wù)程序中用軟件對程序中用軟件對TI

11、TI標(biāo)志清標(biāo)志清“0 0”。 (2 2)RIRI接收中斷請求標(biāo)志位。串口接收完一個數(shù)據(jù)接收中斷請求標(biāo)志位。串口接收完一個數(shù)據(jù)幀,硬件自動置幀,硬件自動置“1 1”RIRI標(biāo)志。標(biāo)志。必須在中斷服務(wù)程序必須在中斷服務(wù)程序中用中用軟件軟件對對RIRI標(biāo)志清標(biāo)志清“0 0”。 3 3、 中斷允許寄存器中斷允許寄存器IEIE CPUCPU對中斷源的開放或屏蔽,由片內(nèi)的對中斷源的開放或屏蔽,由片內(nèi)的中斷允許寄存器中斷允許寄存器IEIE控制??刂?。字節(jié)地址為字節(jié)地址為A8HA8H,可位尋址。格式如下:可位尋址。格式如下:IEIE對中斷的開放和關(guān)閉為兩級控制對中斷的開放和關(guān)閉為兩級控制 總的開關(guān)中斷控制位總

12、的開關(guān)中斷控制位EAEA(IE.7IE.7位)位): : EA=0 EA=0,所有中斷請求被屏蔽。,所有中斷請求被屏蔽。 EA=1 EA=1,CPUCPU開放中斷,但五個中斷源的中斷請求是開放中斷,但五個中斷源的中斷請求是否允許,還要由否允許,還要由IEIE中的中的5 5個中斷請求允許控制位決個中斷請求允許控制位決定。定。IEIE中各位的功能如下:中各位的功能如下:(1 1)EAEA:中斷允許總控制位中斷允許總控制位0 0:CPUCPU屏蔽所有的中斷請求屏蔽所有的中斷請求( (CPUCPU關(guān)中斷關(guān)中斷) );1 1:CPUCPU開放所有中斷開放所有中斷( (CPUCPU開中斷開中斷) )。(2

13、 2)ESES:串行口中斷允許位串行口中斷允許位0 0:禁止串行口中斷;禁止串行口中斷;1 1:允許串行口中斷。允許串行口中斷。 (3 3)ET1ET1:定時器定時器/ /計數(shù)器計數(shù)器T1T1的溢出中斷允許位的溢出中斷允許位0 0:禁止禁止T1T1溢出中斷;溢出中斷;1 1:允許允許T1T1溢出中斷。溢出中斷。(4 4)EX1EX1:外部中斷外部中斷1 1中斷允許位中斷允許位0 0:禁止外部中斷禁止外部中斷1 1中斷;中斷;1 1:允許外部中斷允許外部中斷1 1中斷。中斷。(5 5)ET0ET0:定時器定時器/ /計數(shù)器計數(shù)器T0T0的溢出中斷允許位的溢出中斷允許位0 0:禁止禁止T0T0溢出

14、中斷;溢出中斷;1 1:允許允許T0T0溢出中斷。溢出中斷。(6 6)EX0EX0:外部中斷外部中斷0 0中斷允許位。中斷允許位。0 0:禁止外部中斷禁止外部中斷0 0中斷;中斷;1 1:允許外部中斷允許外部中斷0 0中斷。中斷。 MCS-51MCS-51復(fù)位后,復(fù)位后,IEIE清清0 0,所有中斷請求被禁止。,所有中斷請求被禁止。若使某一個中斷源被允許中斷,除了若使某一個中斷源被允許中斷,除了IEIE相應(yīng)的位的被相應(yīng)的位的被置置“1 1” ,還必須使,還必須使EAEA位位=1=1。改變改變IEIE的內(nèi)容,可由位操作指令來實現(xiàn),即:的內(nèi)容,可由位操作指令來實現(xiàn),即: SETB bitSETB

15、bit; CLR bit CLR bit。例例5-15-1 若允許片內(nèi)若允許片內(nèi)2 2個定時器個定時器/ /計數(shù)器中斷,禁止其它計數(shù)器中斷,禁止其它中斷源的中斷請求。編寫設(shè)置中斷源的中斷請求。編寫設(shè)置IEIE的相應(yīng)程序段的相應(yīng)程序段(1 1)用位操作指令來編寫如下程序段)用位操作指令來編寫如下程序段:CLR ES CLR ES ;禁止串行口中斷;禁止串行口中斷 CLR EX1 CLR EX1 ;禁止外部中斷禁止外部中斷1 1中斷中斷CLR EX0CLR EX0;禁止外部中斷禁止外部中斷0 0中斷中斷 SETB ET0 SETB ET0 ;允許定時器允許定時器/ /計數(shù)器計數(shù)器T0T0中斷中斷

16、SETB ET1 SETB ET1 ;允許定時器允許定時器/ /計數(shù)器計數(shù)器T1T1中斷中斷 SETB EA SETB EA ;CPUCPU開中斷開中斷(2 2)用字節(jié)操作指令來編寫)用字節(jié)操作指令來編寫: MOV IEMOV IE,#8AH#8AH或者用:或者用: MOV 0A8HMOV 0A8H,#8AH#8AH ;A8HA8H為為IEIE寄存器字節(jié)地址寄存器字節(jié)地址4 4、 中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IPIP兩個中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套。兩個中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套。如圖如圖5-65-6示。示。 可歸納為下面兩條基本規(guī)則:可歸納為下面兩條基本規(guī)則:(1 1)低優(yōu)先級可被

17、高優(yōu)先級中斷,反之則不能。)低優(yōu)先級可被高優(yōu)先級中斷,反之則不能。(2)同級中斷不會被它的同級中斷源所中斷。)同級中斷不會被它的同級中斷源所中斷。若若CPUCPU正在執(zhí)行高優(yōu)先級的中斷,則不能被任何中斷正在執(zhí)行高優(yōu)先級的中斷,則不能被任何中斷源所中斷源所中斷。中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IPIP,其字節(jié)地址為其字節(jié)地址為B8HB8H。IPIP各個位的含義:各個位的含義:(1 1)PSPS串行口中斷優(yōu)先級控制位串行口中斷優(yōu)先級控制位1 1:高優(yōu)先級中斷;高優(yōu)先級中斷;0 0:低優(yōu)先級中斷。低優(yōu)先級中斷。(2 2)PT1PT1定時器定時器T1T1中斷優(yōu)先級控制位中斷優(yōu)先級控制位1 1:高優(yōu)先級

18、中斷;高優(yōu)先級中斷;0 0:低優(yōu)先級中斷。低優(yōu)先級中斷。(3 3)PX1PX1外部中斷外部中斷1 1中斷優(yōu)先級控制位中斷優(yōu)先級控制位1 1:高優(yōu)先級中斷;高優(yōu)先級中斷;0 0:低優(yōu)先級中斷。低優(yōu)先級中斷。(4 4)PT0PT0定時器定時器T0T0中斷優(yōu)先級控制位中斷優(yōu)先級控制位1 1:高優(yōu)先級中斷;高優(yōu)先級中斷;0 0:低優(yōu)先級中斷。低優(yōu)先級中斷。(5 5)PX0PX0外部中斷外部中斷0 0中斷優(yōu)先級控制位中斷優(yōu)先級控制位1 1:高優(yōu)先級中斷;高優(yōu)先級中斷;0 0:低優(yōu)先級中斷。低優(yōu)先級中斷。 在同時收到在同時收到幾個同一優(yōu)先級的中斷請求幾個同一優(yōu)先級的中斷請求時,時,優(yōu)先響應(yīng)優(yōu)先響應(yīng)哪一個中

19、斷,取決于哪一個中斷,取決于內(nèi)部的查詢順序內(nèi)部的查詢順序。查詢順序查詢順序如如下:下: 中斷源中斷源 中斷級別中斷級別外部中斷外部中斷0 0最高最高T0T0溢出中斷溢出中斷外部中斷外部中斷1 1T1T1溢出中斷溢出中斷串行口中斷串行口中斷最低最低例例5-25-2 設(shè)置設(shè)置IPIP寄存器的初始值,使寄存器的初始值,使2 2個外中斷個外中斷請求為高優(yōu)先級,其它中斷請求為低優(yōu)先級。請求為高優(yōu)先級,其它中斷請求為低優(yōu)先級。(1 1)用位操作指令)用位操作指令 SETB PX0 SETB PX0 ;2 2個外中斷為高優(yōu)先級個外中斷為高優(yōu)先級 SETB PX1 SETB PX1 CLR PS CLR PS

20、 ;串口為低優(yōu)先級中斷串口為低優(yōu)先級中斷CLR PT0 CLR PT0 ;2 2個定時器個定時器/ /計數(shù)器低優(yōu)先計數(shù)器低優(yōu)先級中斷級中斷CLR PT1CLR PT1(2 2)用字節(jié)操作指令用字節(jié)操作指令 MOV IPMOV IP,#05H#05H或:或: MOV 0B8HMOV 0B8H,#05H #05H ;B8HB8H為為IPIP寄存器的字寄存器的字節(jié)地址節(jié)地址 5.5 5.5 響應(yīng)中斷請求的條件響應(yīng)中斷請求的條件 一個中斷請求被響應(yīng),需滿足以下一個中斷請求被響應(yīng),需滿足以下4 4個必要條件:個必要條件:(1 1)該中斷源發(fā)出中斷請求,即該中斷源對應(yīng)的該中斷源發(fā)出中斷請求,即該中斷源對應(yīng)

21、的中斷請求標(biāo)志為中斷請求標(biāo)志為“1 1”。(2 2)IEIE寄存器中的中斷總允許位寄存器中的中斷總允許位EA=1EA=1。(3 3)該中斷源的中斷允許位)該中斷源的中斷允許位=1=1,即該中斷沒有被,即該中斷沒有被屏蔽。屏蔽。(4 4)無同級或更高級中斷正在被服務(wù)。)無同級或更高級中斷正在被服務(wù)。當(dāng)前指令執(zhí)行結(jié)束嗎?有滿足4個必要條件的中斷申請嗎?YNN系統(tǒng)硬件自動調(diào)用如下指令:LCALL 對應(yīng)中斷程序入口地址,圖2-4-4 中斷響應(yīng)過程簡圖(在每個機器周期最后狀態(tài)執(zhí)行)剛 才 執(zhí) 行 的 指 令 是RETI或是訪問IP、IE的指令嗎?執(zhí)行下一條指令NY相應(yīng)的中斷程序執(zhí)行結(jié)束后返回主程序斷點處

22、Y響應(yīng)中斷時響應(yīng)中斷時首先由硬件自動生成一條長調(diào)用指令首先由硬件自動生成一條長調(diào)用指令: : LCALL addr16LCALL addr16接著就由接著就由CPUCPU執(zhí)行該指令執(zhí)行該指令, ,將將PCPC的內(nèi)容壓的內(nèi)容壓入堆棧以保護斷點,再將中斷入口地址入堆棧以保護斷點,再將中斷入口地址裝入裝入PCPC。各中斷源服務(wù)程序的入口地址。各中斷源服務(wù)程序的入口地址是固定的,如下所示:是固定的,如下所示: 中斷源中斷源 入口地址入口地址 外部中斷外部中斷0 0 00030003H H 定時器定時器/ /計數(shù)器計數(shù)器T0 T0 000BH000BH外部中斷外部中斷1 1 00130013H H 定時

23、器定時器/ /計數(shù)器計數(shù)器T1T1001BH001BH串行口中斷串行口中斷00230023H H中斷響應(yīng)是有條件的,遇到中斷響應(yīng)是有條件的,遇到下列三種情況下列三種情況之一時,中之一時,中斷響應(yīng)被封鎖:斷響應(yīng)被封鎖: (1 1)CPUCPU正在處理同級的或更高優(yōu)先級的中斷正在處理同級的或更高優(yōu)先級的中斷。 (2 2)所查詢的機器周期所查詢的機器周期不是所當(dāng)前正在執(zhí)行指令的不是所當(dāng)前正在執(zhí)行指令的最后一個機器周期最后一個機器周期。只有在當(dāng)前指令執(zhí)行完畢后,。只有在當(dāng)前指令執(zhí)行完畢后,才能進行中斷響應(yīng)。才能進行中斷響應(yīng)。(3 3)正在執(zhí)行的指令是正在執(zhí)行的指令是RETIRETI或是訪問或是訪問IE

24、IE或或IPIP的指令。的指令。需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷請求。需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷請求。 如果存在上述三種情況之一,如果存在上述三種情況之一,CPUCPU將丟棄中斷查詢結(jié)將丟棄中斷查詢結(jié)果,不能對中斷進行響應(yīng)。果,不能對中斷進行響應(yīng)。5.6 5.6 外部中斷的響應(yīng)時間外部中斷的響應(yīng)時間外部中斷的外部中斷的最短最短的響應(yīng)時間為的響應(yīng)時間為3 3個機器周期個機器周期: :(1 1)中斷請求標(biāo)志位查詢占)中斷請求標(biāo)志位查詢占1 1個機器周期個機器周期。(2 2)子程序調(diào)用指令)子程序調(diào)用指令LCALLLCALL轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序入口,需入

25、口,需2 2個機器周期個機器周期。 外部中斷響應(yīng)的外部中斷響應(yīng)的最長最長的響應(yīng)時間為的響應(yīng)時間為8 8個機器周期個機器周期:(1 1)發(fā)生在)發(fā)生在CPUCPU進行中斷標(biāo)志查詢時,剛好是開始進行中斷標(biāo)志查詢時,剛好是開始執(zhí)執(zhí)行行RETIRETI或是訪問或是訪問IEIE或或IPIP的指令的指令,則,則需把當(dāng)前指令執(zhí)需把當(dāng)前指令執(zhí)行完行完再繼續(xù)執(zhí)行一條指令后,才能響應(yīng)中斷,再繼續(xù)執(zhí)行一條指令后,才能響應(yīng)中斷,最長最長需需2 2個機器周期個機器周期。(2 2)接著再執(zhí)行一條指令,按最長指令(乘法指令)接著再執(zhí)行一條指令,按最長指令(乘法指令MULMUL和除法指令和除法指令DIVDIV)來算,也只有來

26、算,也只有4 4個機器周期個機器周期。(3 3)加上)加上硬件子程序調(diào)用硬件子程序調(diào)用指令指令LCALLLCALL的執(zhí)行,需要的執(zhí)行,需要2 2個個機器周期機器周期。所以,所以,外部中斷響應(yīng)最長時間為外部中斷響應(yīng)最長時間為8 8個機器周期個機器周期。 如果已在處理同級或更高級中斷,如果已在處理同級或更高級中斷,響應(yīng)時間無法計算。響應(yīng)時間無法計算。在一個單一中斷的系統(tǒng)里,在一個單一中斷的系統(tǒng)里,MCS-51MCS-51單片機單片機對外部中斷對外部中斷請求的響應(yīng)的時間總是在請求的響應(yīng)的時間總是在3 38 8個機器周期個機器周期之間。之間。5.7 5.7 外部中斷的觸發(fā)方式選擇外部中斷的觸發(fā)方式選擇

27、 兩種觸發(fā)方式兩種觸發(fā)方式:電平觸發(fā)電平觸發(fā)方式和方式和跳沿觸發(fā)跳沿觸發(fā)方式。方式。外中斷的采樣:外中斷的采樣:INT0、INT1 只有外中斷源才有采樣問題只有外中斷源才有采樣問題 MCS-51單片機在每個機器周期的單片機在每個機器周期的S5P2對外中斷對外中斷請求引腳請求引腳(P3.2、P3.3)采樣,若有中斷請求,則采樣,若有中斷請求,則置位置位IE0和和IE1。 由于每個機器周期只采樣一次,故為確保采樣,由于每個機器周期只采樣一次,故為確保采樣,在在P3.2、P3.3引腳上的信號電平至少保持引腳上的信號電平至少保持1個機個機器周期。器周期。 兩種觸發(fā)方式兩種觸發(fā)方式:電平觸發(fā)電平觸發(fā)方式

28、和方式和跳沿觸發(fā)跳沿觸發(fā)方式。方式。5.7.1 5.7.1 電平觸發(fā)方式電平觸發(fā)方式 TCON.0=IT0=0(或(或TCON.2=IT1=0)時時 若若CPU采樣到采樣到INT0或或INT1為低電平(該電為低電平(該電平來自外部硬件,平來自外部硬件,CPU無法控制)即可申請無法控制)即可申請中斷。在中斷。在CPU響應(yīng)前引腳必須保持低電平,響應(yīng)前引腳必須保持低電平,但若低電平保持時間過長,在執(zhí)行了一次中但若低電平保持時間過長,在執(zhí)行了一次中斷程序后仍未撤銷,還會引起中斷。故在采斷程序后仍未撤銷,還會引起中斷。故在采用電平觸發(fā)情況時,在這次中斷服務(wù)程序執(zhí)用電平觸發(fā)情況時,在這次中斷服務(wù)程序執(zhí)行完

29、之前,引腳上必須變成高電平。行完之前,引腳上必須變成高電平。 。 5.7.2 5.7.2 跳沿觸發(fā)方式跳沿觸發(fā)方式 邊沿觸發(fā)方式:邊沿觸發(fā)方式: TCON.0=IT0=1(或(或TCON.2=IT1=1)時時 CPU在在S5P2采樣,如果在相鄰的兩次采樣中,第采樣,如果在相鄰的兩次采樣中,第一次采到引腳一次采到引腳1,第二次采樣引腳,第二次采樣引腳0則置位則置位IE0或或IE1,申請中斷。,申請中斷。IE0和和IE1狀態(tài)可一直保持,直到狀態(tài)可一直保持,直到CPU響應(yīng)中斷。進入中斷服務(wù)程序后,響應(yīng)中斷。進入中斷服務(wù)程序后,IE0和和IE1有有硬件自動清硬件自動清0 。所以該方式適合于以脈沖形式輸

30、入的外部中斷請求。5.8 5.8 中斷請求標(biāo)志位的撤消中斷請求標(biāo)志位的撤消1 1、中斷請求被響應(yīng)后。硬件會、中斷請求被響應(yīng)后。硬件會自動清自動清TF0TF0或或TF1TF1或或IE0IE0、IE1IE1。2 2、 中斷請求標(biāo)志位中斷請求標(biāo)志位TITI、RIRI,中斷請求被響應(yīng)后,中斷請求被響應(yīng)后,只能用軟件只能用軟件清除清除 CLR TI CLR TI ;清清TITI標(biāo)志位標(biāo)志位CLR RI CLR RI ;清清RIRI標(biāo)志位標(biāo)志位 除了標(biāo)志位清除了標(biāo)志位清“0 0”之外,還需在中斷響應(yīng)后把之外,還需在中斷響應(yīng)后把中斷請求中斷請求信號引腳從低電平強制改變?yōu)楦唠娖剑缧盘栆_從低電平強制改變?yōu)楦?/p>

31、電平,如圖圖5-85-8所示。所示。只要只要P1.0P1.0端輸出一個負脈沖就可以使端輸出一個負脈沖就可以使D D觸發(fā)器置觸發(fā)器置“1 1”,從而撤消了低電平的中斷請求信號。從而撤消了低電平的中斷請求信號。所需的負脈沖所需的負脈沖可增加如下兩條指令得到:可增加如下兩條指令得到: ORL P1ORL P1,#01H#01H ;P1.0P1.0為為“1 1” ANL P1 ANL P1,#0FEH#0FEH;P1.0P1.0為為“0 0” 電平方式的外部中斷請求信號的完全撤消,是通過軟電平方式的外部中斷請求信號的完全撤消,是通過軟硬件相結(jié)合的方法來實現(xiàn)的。硬件相結(jié)合的方法來實現(xiàn)的。5.9 5.9

32、中斷服務(wù)程序的設(shè)計中斷服務(wù)程序的設(shè)計一、中斷服務(wù)程序設(shè)計的任務(wù)一、中斷服務(wù)程序設(shè)計的任務(wù) 基本任務(wù):基本任務(wù): (1 1)設(shè)置中斷允許控制寄存器)設(shè)置中斷允許控制寄存器IEIE。 (2 2)設(shè)置中斷優(yōu)先級寄存器)設(shè)置中斷優(yōu)先級寄存器IPIP。 (3 3)對外中斷源,是采用電平觸發(fā)還是跳沿觸發(fā)。)對外中斷源,是采用電平觸發(fā)還是跳沿觸發(fā)。TCONTCON (4 4)編寫中斷服務(wù)程序,處理中斷請求)編寫中斷服務(wù)程序,處理中斷請求。前前3 3條一般放在主程序的初始化程序段中。條一般放在主程序的初始化程序段中。例例5-35-3 假設(shè)允許外部中斷假設(shè)允許外部中斷0 0中斷,并設(shè)定它為高級中中斷,并設(shè)定它為

33、高級中斷,其它中斷源為低級中斷,采用跳沿觸發(fā)方式。斷,其它中斷源為低級中斷,采用跳沿觸發(fā)方式。在主程序中編寫如下程序段:在主程序中編寫如下程序段: SETB EA SETB EA ;CPUCPU開中斷開中斷 SETB ET0 SETB ET0 ;允許外中斷允許外中斷0 0產(chǎn)生中斷產(chǎn)生中斷 SETB PX0 SETB PX0 ;外中斷外中斷0 0為高級中斷為高級中斷 SETB IT0 SETB IT0 ;外中斷外中斷0 0為跳沿觸發(fā)方式為跳沿觸發(fā)方式 二、采用中斷時的主程序結(jié)構(gòu)二、采用中斷時的主程序結(jié)構(gòu)常用的常用的主程序結(jié)構(gòu)主程序結(jié)構(gòu)如下:如下:ORG 0000HORG 0000HLJMP MA

34、INLJMP MAINORG ORG 中斷入口地址中斷入口地址LJMP INTLJMP INT ORG XXXXHORG XXXXHMAINMAIN:主主 程程 序序 INTINT:中斷服務(wù)程序中斷服務(wù)程序三、中斷服務(wù)程序的流程三、中斷服務(wù)程序的流程 例例5-45-4 根據(jù)圖根據(jù)圖5-95-9的中斷服務(wù)程序流程,編出中斷的中斷服務(wù)程序流程,編出中斷服務(wù)程序。假設(shè),現(xiàn)場保護只需將服務(wù)程序。假設(shè),現(xiàn)場保護只需將PSWPSW和和A A的內(nèi)容的內(nèi)容壓入堆棧中保護。壓入堆棧中保護。典型的中斷服務(wù)程序如下:典型的中斷服務(wù)程序如下: INTINT:CLR EACLR EA;CPUCPU關(guān)中斷關(guān)中斷PUSH

35、PSWPUSH PSW;現(xiàn)場保護現(xiàn)場保護PUSH ACCPUSH ACC; SETB EASETB EA;CPUCPU開中斷開中斷 中斷處理程序段中斷處理程序段 CLR EACLR EA;CPUCPU關(guān)中斷關(guān)中斷POP ACCPOP ACC;現(xiàn)場恢復(fù)現(xiàn)場恢復(fù)POP PSW POP PSW SETB EASETB EA;CPUCPU開中斷開中斷RETIRETI;中斷返回,恢復(fù)斷點中斷返回,恢復(fù)斷點幾點說明:幾點說明:(1 1)現(xiàn)場保護僅涉及到)現(xiàn)場保護僅涉及到PSWPSW和和A A的內(nèi)容,的內(nèi)容,如還有其它如還有其它需保護的內(nèi)容需保護的內(nèi)容,只需要在相應(yīng)的位置再加幾條,只需要在相應(yīng)的位置再加幾條

36、PUSHPUSH和和POPPOP指令即可。指令即可。(2 2) “中斷處理程序段中斷處理程序段”,應(yīng)根據(jù)任務(wù)的具體要求,應(yīng)根據(jù)任務(wù)的具體要求,來編寫。來編寫。(3 3)如果本中斷服務(wù)程序)如果本中斷服務(wù)程序不允許被其它的中斷所中不允許被其它的中斷所中斷斷??蓪?。可將“中斷處理程序段中斷處理程序段”前后的前后的“SETB EASETB EA”和和“CLR EACLR EA”兩條指令去掉。兩條指令去掉。(4 4)中斷服務(wù)程序的)中斷服務(wù)程序的最后一條指令最后一條指令必須是返回指令必須是返回指令RETIRETI。5.10 5.10 多外部中斷源系統(tǒng)設(shè)計多外部中斷源系統(tǒng)設(shè)計 兩個外部中斷請求源往往不夠

37、用。兩個外部中斷請求源往往不夠用??刹捎弥袛嗪筒樵兘Y(jié)合的方法可采用中斷和查詢結(jié)合的方法例如最高級別中斷請求源例如最高級別中斷請求源IR0IR0接接INT0INT0* *輸入端,輸入端,其余的外部中斷請求源其余的外部中斷請求源IR1IR1IR4IR4用用“線或線或”的辦法連到的辦法連到MCS-51MCS-51的另一個外中斷源輸入端,的另一個外中斷源輸入端,同時還連到同時還連到P1P1口???。5 5個外部中斷源的排隊順序依此為:個外部中斷源的排隊順序依此為:IR0IR0IR4IR4。 ORG 0013HORG 0013H ; INT1 INT1的中斷入口的中斷入口 LJMP INT1 LJMP I

38、NT1 ; INT1: PUSH PSW INT1: PUSH PSW ;保護現(xiàn)場保護現(xiàn)場 PUSH APUSH ACCCCJB P1.0,IR1 JB P1.0,IR1 ;P1.0P1.0高,高,IR1IR1有請求有請求JB P1.1,IR2 JB P1.1,IR2 ;P1.1P1.1高,高,IR2IR2有請求有請求JB P1.2,IR3 JB P1.2,IR3 ;P1.2P1.2高,高,IR3IR3有請求有請求 JB P1.3,IR4 JB P1.3,IR4 ;P1.3P1.3高,高,IR4IR4有請求有請求 INTIR: INTIR: POP APOP ACCCC ;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 P

39、OP PSWPOP PSW RETI RETI ;中斷返回中斷返回 IR1:IR1: IR1IR1的中斷處理程序的中斷處理程序 AJMP INTIR AJMP INTIR ; IR2: IR2: IR2IR2的中斷處理程序的中斷處理程序 AJMP INTIR AJMP INTIR ; IR3:IR3: IR3IR3的中斷處理程序的中斷處理程序 AJMP INTIR AJMP INTIR ; IR4: IR4: IR4IR4的中斷處理程序的中斷處理程序 AJMP INTIR AJMP INTIR ;XTAL1XTAL2RSTVccP1.0C1C2XC31K8.2K+5V+5VAT89C51GND

40、VssGNDP3.2GND指示燈LED1外部中斷請求信號 例1、 當(dāng)有外部中斷0發(fā)生時,指示燈LED1改變當(dāng)前狀態(tài)。(采用下降沿觸發(fā)中斷方式) C1、C2=2030pF, x=1.2MHz12MHzC3=10ufEA主程序 ORG 0000H AJMP MAIN ORG 0003H LJMP PINT0 ORG 0100HMAIN: MOV SP,#40H SETB IT0 SETB EA SETB EX0 SJMP $ ORG 0200H ;中斷程序PINT0:CPL P1.0 RETI END低電平觸發(fā)中斷 ORG 0000H AJMP MAIN ORG 0003H LJMP PINT0

41、ORG 0100HMAIN: MOV SP,#40H CLR IT0 SETB EA SETB EX0 SJMP $ ORG 0200H ;中斷程序PINT0:CPL P1.0WAIT:JNB P3.2 , WAIT RETI ENDXTAL1XTAL2RSTVccP1.7C1C2XC31K8.2K+5V+5VAT89C51GNDVssGNDP1.6P1.5GND指示燈指示燈LED07LED07C1C1、C2=20pF, x=6MHzC2=20pF, x=6MHz,C3=10ufC3=10ufEAP1.4P1.3P1.2P1.1P1.0P3.2外部中斷請求信號74LS244例2 : 有八只發(fā)光

42、二極管間隔0.5S循環(huán)點亮,當(dāng)報警發(fā)生時,八只發(fā)光管全亮;當(dāng)無報警時,發(fā)光管恢復(fù)循環(huán)點亮。(采用電平觸(采用電平觸發(fā)中斷方式)發(fā)中斷方式) ORG 0000HLJMP STARTORG 0003HLJMP WWW1START: CLR IT0 SETB EA SETB EX0 MOV A,#01HQQ1: MOV P1,A RL A MOV R2 , #10AA1: LCALL DELAY50ms DJNZ R2 , AA1 SJMP QQ1DELAY50ms: MOV R7 , #200DEL1: MOV R6 , #123 NOPDEL2: DJNZ R6 , DEL2 DJNZ R7,

43、DEL1 RET WWW1: MOV P1,#0FFHWWW2: JNB P3.2 , WWW2 RETI ENDORG 0000HLJMP STARTORG 0003H ;外部中斷0中斷程序入口地址LJMP WWW1 ;轉(zhuǎn)去執(zhí)行外部中斷0中斷程序START: CLR IT0 ;設(shè)定外部中斷0為低電平觸發(fā)方式 SETB EA ;設(shè)定此單片機允許中斷 SETB EX0 ;設(shè)定此單片機允許外部中斷0中斷 MOV A,#01HQQ1: MOV P1,A ;使某些燈亮或滅 RL A ;A中二進制數(shù)左移一位 MOV R2 , #10 AA1: LCALL DELAY50ms ;調(diào)子程序DELAY50ms

44、,延時50ms DJNZ R2 , AA1 SJMP QQ1DELAY50ms: MOV R7 , #200 ;子程序DELAY50ms,延時50msDEL1: MOV R6 , #123 NOPDEL2: DJNZ R6 , DEL2 DJNZ R7, DEL1 RET;外部中斷0中斷程序 WWW1 WWW1: MOV P1,#0FFH ; 有中斷時所有燈全亮WWW2: JNB P3.2 , WWW2 ;中斷信號未取消時不退出中斷程序 RETI ;退出中斷程序 END TCONTCON為定時器為定時器/ /計數(shù)器的控制寄存器計數(shù)器的控制寄存器 字節(jié)地址為字節(jié)地址為8888H H。包含:包含:

45、(1 1)T0T0和和T1T1的溢出中斷請求標(biāo)志位的溢出中斷請求標(biāo)志位TF1TF1和和TF0TF0(2 2)外部中斷請求標(biāo)志位外部中斷請求標(biāo)志位IE1IE1與與IE0IE0。格式如下所示:格式如下所示:各標(biāo)志位的功能:各標(biāo)志位的功能: (1 1)IT0IT0選擇外部中斷請求選擇外部中斷請求0 0為跳沿觸發(fā)方式還是電為跳沿觸發(fā)方式還是電平觸發(fā)方式:平觸發(fā)方式: IT0=0 IT0=0,為為電平觸發(fā)電平觸發(fā)方式。方式。中斷允許寄存器中斷允許寄存器IEIE CPUCPU對中斷源的開放或屏蔽,由片內(nèi)的對中斷源的開放或屏蔽,由片內(nèi)的中斷允許寄存器中斷允許寄存器IEIE控制??刂啤W止?jié)地址為字節(jié)地址為A8

46、HA8H,可位尋址。格式如下:可位尋址。格式如下:IEIE對中斷的開放和關(guān)閉為兩級控制對中斷的開放和關(guān)閉為兩級控制 總的開關(guān)中斷控制位總的開關(guān)中斷控制位EAEA(IE.7IE.7位)位): : EA=0 EA=0,所有中斷請求被屏蔽。,所有中斷請求被屏蔽。 EA=1 EA=1,CPUCPU開放中斷,但五個中斷源的中斷請求是開放中斷,但五個中斷源的中斷請求是否允許,還要由否允許,還要由IEIE中的中的5 5個中斷請求允許控制位決個中斷請求允許控制位決定。定。IEIE中各位的功能如下:中各位的功能如下:(1 1)EAEA:中斷允許總控制位中斷允許總控制位0 0:CPUCPU屏蔽所有的中斷請求屏蔽所

47、有的中斷請求( (CPUCPU關(guān)中斷關(guān)中斷) );1 1:CPUCPU開放所有中斷開放所有中斷( (CPUCPU開中斷開中斷) )。(2 2)ESES:串行口中斷允許位串行口中斷允許位0 0:禁止串行口中斷;禁止串行口中斷;1 1:允許串行口中斷。允許串行口中斷。 (3 3)ET1ET1:定時器定時器/ /計數(shù)器計數(shù)器T1T1的溢出中斷允許位的溢出中斷允許位0 0:禁止禁止T1T1溢出中斷;溢出中斷;1 1:允許允許T1T1溢出中斷。溢出中斷。(4 4)EX1EX1:外部中斷外部中斷1 1中斷允許位中斷允許位0 0:禁止外部中斷禁止外部中斷1 1中斷;中斷;1 1:允許外部中斷允許外部中斷1

48、1中斷。中斷。(5 5)ET0ET0:定時器定時器/ /計數(shù)器計數(shù)器T0T0的溢出中斷允許位的溢出中斷允許位0 0:禁止禁止T0T0溢出中斷;溢出中斷;1 1:允許允許T0T0溢出中斷。溢出中斷。(6 6)EX0EX0:外部中斷外部中斷0 0中斷允許位。中斷允許位。0 0:禁止外部中斷禁止外部中斷0 0中斷;中斷;1 1:允許外部中斷允許外部中斷0 0中斷。中斷。 例例3 3、圖、圖2-4-82-4-8所示為單片機數(shù)據(jù)傳輸示意圖。外設(shè)數(shù)所示為單片機數(shù)據(jù)傳輸示意圖。外設(shè)數(shù)據(jù)經(jīng)據(jù)經(jīng)P1P1口輸入單片機,每準備好一個數(shù)據(jù),外設(shè)發(fā)出口輸入單片機,每準備好一個數(shù)據(jù),外設(shè)發(fā)出選通信號,經(jīng)觸發(fā)器和非門至選通

49、信號,經(jīng)觸發(fā)器和非門至P3.2P3.2端。端。 解:外設(shè)每準備好一個數(shù)據(jù)后,發(fā)出選通信號,使觸發(fā)器輸出解:外設(shè)每準備好一個數(shù)據(jù)后,發(fā)出選通信號,使觸發(fā)器輸出1 1再經(jīng)非門得再經(jīng)非門得0 0送至,向送至,向CPUCPU發(fā)出中斷請求,發(fā)出中斷請求,CPU CPU 響應(yīng)這個中斷響應(yīng)這個中斷請求后,在中斷處理程序中先撤除中斷請求信號,(通過請求后,在中斷處理程序中先撤除中斷請求信號,(通過P3.0=0P3.0=0,使,使=1=1)再由)再由P1P1口輸入數(shù)據(jù)到單片機內(nèi)部??谳斎霐?shù)據(jù)到單片機內(nèi)部。 ORG ORG 0000H0000HSTART: LJMP START: LJMP MAINMAIN ORG ORG 0003H0003H LJMP LJMP INT0INT0 ORG ORG 0030H 0030H ;主程序;主程序MAIN: MAIN: CLR CLR IT0 IT0

溫馨提示

  • 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

提交評論