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

下載本文檔

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

文檔簡介

1、第5章 單片機(jī)中斷系統(tǒng)5.1 中斷源5.2 中斷控制5.3 中斷過程5.3.1中斷請求5.3.2中斷響應(yīng)5.3.3中斷處理5.3.4中斷返回5.4 外部中斷源擴(kuò)展5.5 全自動洗衣機(jī)“啟動/暫?!笨刂芇toteus仿真中斷概念中斷概念單片機(jī)正在處理某項事務(wù)(如執(zhí)行洗衣程序)的時候,系統(tǒng)發(fā)生了緊急事件(如衣物纏繞),需要處理;單片機(jī)暫停當(dāng)前正在處理的工作,而轉(zhuǎn)去處理這個緊急事件;待緊急事件處理完成后,再回到原來中斷的地方,繼續(xù)處理原來被中斷的事務(wù),這個過程稱作中斷。中斷過程中斷請求、中斷響應(yīng)、中斷處理、中斷返回中斷作用1.通過中斷系統(tǒng),單片機(jī)可以同時控制多個外設(shè)并行操作。2.通過中斷系統(tǒng),單片機(jī)

2、可以方便實現(xiàn)實時處理,及時處理隨機(jī)事件。3.通過中斷系統(tǒng),可以及時處理系統(tǒng)故障,如掉電、運算溢出等5.1中斷源 能夠向CPU申請中斷的事件叫中斷源。外部中斷源INT0/INT1內(nèi)部中斷源T0/T1/串行口中斷矢量中斷源中斷標(biāo)志中斷矢量引腳優(yōu)先次序INT0外部中斷0IE00003HP3.2高低定時/計數(shù)器0中斷TF0000BHP3.4INT1外部中斷1IE10013HP3.3定時/計數(shù)器1中斷TF1001BHP3.5串行中斷TI/RI0023H5.2中斷控制 80518051單片機(jī)設(shè)有四個特殊功能寄存器:單片機(jī)設(shè)有四個特殊功能寄存器:定時控制寄存器定時控制寄存器TCONTCON串行控制寄存器串行

3、控制寄存器SCONSCON中斷屏蔽寄存器中斷屏蔽寄存器IEIE中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IP IP 1.1.定時控制寄存器定時控制寄存器TCON TCON TCONTCON的字節(jié)地址為的字節(jié)地址為88H88H,位地址為,位地址為88H8FH 88H8FH IT0/IT1IT0/IT1:外部中斷:外部中斷0/10/1請求觸發(fā)方式控制位。請求觸發(fā)方式控制位。1 1為脈沖觸發(fā),下降沿有效。為脈沖觸發(fā),下降沿有效。0 0為電為電平觸發(fā),低電平有效。平觸發(fā),低電平有效。IE0/IE1IE0/IE1:外中斷:外中斷/ /請求標(biāo)志位。當(dāng)請求標(biāo)志位。當(dāng)CPUCPU采樣到(采樣到(INT0/INT1INT

4、0/INT1)端出現(xiàn)有效中斷)端出現(xiàn)有效中斷請求時,請求時,IE0IE0(IE1IE1)位由硬件置)位由硬件置“1”1”。當(dāng)中斷響應(yīng),轉(zhuǎn)向中斷服務(wù)程序后,由硬。當(dāng)中斷響應(yīng),轉(zhuǎn)向中斷服務(wù)程序后,由硬件把件把IE0IE0(或(或IE1IE1)清零。)清零。 TR0/TR1TR0/TR1:定時:定時/ /計數(shù)器運行控制位。計數(shù)器運行控制位。TF0/TF1TF0/TF1:定時:定時/ /計數(shù)溢出標(biāo)志位。用于定時計數(shù)溢出標(biāo)志位。用于定時/ /計數(shù)器控制。計數(shù)器控制。 1INT 1INT0INT 0INTTCOND7D6D5D4D3D2D1D0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位地址8

5、FH8EH8DH8CH8BH8AH89H88H功能 T1 中斷標(biāo)志T1啟動控制T0中斷標(biāo)志T0啟動控制中 斷標(biāo)志觸 發(fā)方式中斷標(biāo)志觸發(fā)方式電平中斷電平中斷單片機(jī)在每個機(jī)器周期的單片機(jī)在每個機(jī)器周期的S5P2S5P2檢查中斷源口線一次,檢查中斷源口線一次,檢測到低電平,即置位中斷請求標(biāo)志,向檢測到低電平,即置位中斷請求標(biāo)志,向CPUCPU請求中請求中斷。斷。中斷標(biāo)志寄存器不鎖存電平觸發(fā)中斷請求信號。單片機(jī)把每個機(jī)器周期的S5P2采樣到的外部中斷源口線的電平邏輯直接賦值到中斷標(biāo)志寄存器。但當(dāng)中斷請求被阻塞而沒有得到及時響應(yīng)時,將被丟失。電平觸發(fā)中斷請求不能及時撤銷,將引起重復(fù)中斷電平觸發(fā)中斷請求不

6、能及時撤銷,將引起重復(fù)中斷 邊沿中斷邊沿中斷單片機(jī)在上一個機(jī)器周期檢測到中斷源口線為高電平,單片機(jī)在上一個機(jī)器周期檢測到中斷源口線為高電平,下一個機(jī)器周期檢測到低電平,即置位中斷標(biāo)志,請下一個機(jī)器周期檢測到低電平,即置位中斷標(biāo)志,請求中斷。求中斷。中斷標(biāo)志寄存器鎖存邊沿中斷請求。中斷口線上一個從高到低的跳變將記錄在標(biāo)志寄存器中,直到CPU響應(yīng)并轉(zhuǎn)向該中斷服務(wù)程序時,由硬件自動清除。因此因此當(dāng)當(dāng)CPUCPU正在執(zhí)行同級中斷(甚至是外部中斷本身)或正在執(zhí)行同級中斷(甚至是外部中斷本身)或高級中斷時,產(chǎn)生的外部中斷(負(fù)跳變)同樣將被記高級中斷時,產(chǎn)生的外部中斷(負(fù)跳變)同樣將被記錄在中斷標(biāo)志寄存器中

7、。錄在中斷標(biāo)志寄存器中。2.2.串行中斷控制寄存器串行中斷控制寄存器SCON SCON 串行控制寄存器串行控制寄存器SCONSCON的字節(jié)地址為的字節(jié)地址為98H98H,位地址為,位地址為98H-9FH98H-9FHTI: TI: 串行口發(fā)送中斷請求標(biāo)志位。當(dāng)發(fā)送完一幀串行數(shù)據(jù)后,由硬件置串行口發(fā)送中斷請求標(biāo)志位。當(dāng)發(fā)送完一幀串行數(shù)據(jù)后,由硬件置“1”1”;在中斷響應(yīng),轉(zhuǎn)向中斷服務(wù)程序后,接口硬件不能自動將;在中斷響應(yīng),轉(zhuǎn)向中斷服務(wù)程序后,接口硬件不能自動將TITI或或RIRI清清零,需用戶用軟件清零,來撤消中斷。中斷撤消必須在下一個中斷到來之零,需用戶用軟件清零,來撤消中斷。中斷撤消必須在下

8、一個中斷到來之前完成。前完成。 RIRI:串行口接收中斷請求標(biāo)志位。當(dāng)接收完一幀串行數(shù)據(jù)后,由硬件置:串行口接收中斷請求標(biāo)志位。當(dāng)接收完一幀串行數(shù)據(jù)后,由硬件置“1”1”;在中斷響應(yīng),轉(zhuǎn)向中斷服務(wù)程序后,需用軟件清;在中斷響應(yīng),轉(zhuǎn)向中斷服務(wù)程序后,需用軟件清“0”0”。串行中斷請。串行中斷請求由求由TITI和和RIRI的邏輯或得到。的邏輯或得到。 TCOND7D6D5D4D3D2D1D0位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能 方式選擇方式選擇多機(jī)通訊控制接收允許發(fā)送第9位接收第9位串行發(fā)送中斷串行接收中斷3.3.中斷屏蔽寄存

9、器中斷屏蔽寄存器IE IE 中斷屏蔽寄存器中斷屏蔽寄存器IEIE用于控制各中斷源的中斷開放或關(guān)閉。字節(jié)地址為用于控制各中斷源的中斷開放或關(guān)閉。字節(jié)地址為0A8H0A8H,位地,位地址為址為0A8H-0AFH 0A8H-0AFH EAEA:中斷允許總控位。:中斷允許總控位。EA=0EA=0,屏蔽所有的中斷請求;,屏蔽所有的中斷請求;EA=1EA=1,開放所有中斷請求。,開放所有中斷請求。EAEA的作用是使中斷允許形成兩級控制。的作用是使中斷允許形成兩級控制。ESES:串行口中斷允許位。:串行口中斷允許位。ES=0ES=0,禁止串行口中斷;,禁止串行口中斷;ES=1ES=1允許串行口中斷。允許串行

10、口中斷。ET1ET1:定時器:定時器/ /計數(shù)器計數(shù)器T1T1的溢出中斷允許位。的溢出中斷允許位。ET1=0ET1=0,禁止,禁止T1T1中斷;中斷;ET1=1ET1=1,允許,允許T1T1中斷。中斷。EX1EX1:外部中斷:外部中斷1()1()的中斷允許位。的中斷允許位。EX1=0EX1=0,禁止外部中斷,禁止外部中斷1 1中斷;中斷;EX1=1EX1=1,允許外,允許外部中斷部中斷1 1中斷。中斷。ET0ET0:定時器:定時器/ /計數(shù)器計數(shù)器T0T0的溢出中斷允許位。的溢出中斷允許位。ET0=0ET0=0,禁止,禁止T0T0中斷;中斷;ET0=1ET0=1,允許,允許T0T0中斷。中斷。

11、EX0EX0:外部中斷:外部中斷0()0()的中斷允許位。的中斷允許位。EX0=0EX0=0,禁止外部中斷,禁止外部中斷0 0中斷;中斷;EX0=1EX0=1允許外部允許外部中斷中斷0 0中斷。中斷。 1INT0INTIED7D6D5D4D3D2D1D0位名稱EA ESET1EX1ET0EX0位地址AFH ACHABHAAHA9HA8H中斷源CPU 串口T1T04.4.中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IP IP MCS-51MCS-51單片機(jī)的中斷源可以設(shè)置為兩個優(yōu)先級:高優(yōu)先級和低優(yōu)先級,從而實現(xiàn)兩單片機(jī)的中斷源可以設(shè)置為兩個優(yōu)先級:高優(yōu)先級和低優(yōu)先級,從而實現(xiàn)兩級中斷嵌套。級中斷嵌

12、套。優(yōu)先級控制可以通過修改中斷優(yōu)先級控制寄存器優(yōu)先級控制可以通過修改中斷優(yōu)先級控制寄存器IPIP的內(nèi)容實現(xiàn)。的內(nèi)容實現(xiàn)。IPIP的字節(jié)地址為的字節(jié)地址為0B8H0B8H,位地址為,位地址為0BFH0BFH0B8H0B8H PSPS:串行口中斷優(yōu)先級控制位。:串行口中斷優(yōu)先級控制位?!?”0”為低優(yōu)先級為低優(yōu)先級,“1”,“1”為高優(yōu)先級。為高優(yōu)先級。PT1PT1:定時器:定時器/ /計數(shù)器計數(shù)器1 1(T1T1)的中斷優(yōu)先級控制位。)的中斷優(yōu)先級控制位?!?”0”為低優(yōu)先級為低優(yōu)先級,“1”,“1”為為高優(yōu)先級。高優(yōu)先級。PX1PX1:外部中斷:外部中斷1 1的中斷優(yōu)先級控制位。的中斷優(yōu)先級控

13、制位。“0”0”為低優(yōu)先級為低優(yōu)先級,“1”,“1”為高優(yōu)先級。為高優(yōu)先級。PT0PT0:定時器:定時器/ /計數(shù)器計數(shù)器0 0(T0T0)的中斷優(yōu)先級控制位。)的中斷優(yōu)先級控制位?!?”0”為低優(yōu)先級為低優(yōu)先級,“1”,“1”為為高優(yōu)先級。高優(yōu)先級。PX0PX0:外部中斷:外部中斷0 0的中斷優(yōu)先級控制位。的中斷優(yōu)先級控制位?!?”0”為低優(yōu)先級為低優(yōu)先級,“1”,“1”為高優(yōu)先級。為高優(yōu)先級。同一級別中,優(yōu)先權(quán)次序遵從自然優(yōu)先級,從高到低依次為:同一級別中,優(yōu)先權(quán)次序遵從自然優(yōu)先級,從高到低依次為:INT0INT0、T0T0、INT1INT1、T1T1、RI/TIRI/TI。 1INT0I

14、NTIPD7D6D5D4D3D2D1D0位名稱 PSPT1PX1PT0PX0位地址 BCHBBHBAHB9HB8H中斷源 串口T1T0中斷優(yōu)先級遵循下列原則:中斷優(yōu)先級遵循下列原則:正在進(jìn)行中斷服務(wù)的中斷過程不能被新的同級正在進(jìn)行中斷服務(wù)的中斷過程不能被新的同級或更低優(yōu)先級的中斷請求所中斷,一直到該中斷或更低優(yōu)先級的中斷請求所中斷,一直到該中斷服務(wù)程序結(jié)束,返回主程序且執(zhí)行了主程序中的服務(wù)程序結(jié)束,返回主程序且執(zhí)行了主程序中的一條指令后,一條指令后,CPUCPU才響應(yīng)新的同級或低級中斷請才響應(yīng)新的同級或低級中斷請求。求。正在進(jìn)行的低優(yōu)先級中斷服務(wù)程序能被高優(yōu)先正在進(jìn)行的低優(yōu)先級中斷服務(wù)程序能被

15、高優(yōu)先級中斷請求所中斷,實現(xiàn)兩級中斷嵌套。高級中級中斷請求所中斷,實現(xiàn)兩級中斷嵌套。高級中斷結(jié)束后,返回低級中斷服務(wù)。斷結(jié)束后,返回低級中斷服務(wù)。CPUCPU同時接收到幾個中斷請求時,首先響應(yīng)高同時接收到幾個中斷請求時,首先響應(yīng)高優(yōu)先級的中斷請求,同一優(yōu)先級內(nèi)部,按照自然優(yōu)先級的中斷請求,同一優(yōu)先級內(nèi)部,按照自然優(yōu)先級響應(yīng)。優(yōu)先級響應(yīng)。 5.3 5.3 中斷過程中斷過程 .1中斷請求中斷請求 中斷請求就是中斷源向中斷請求就是中斷源向CPUCPU申請中斷的過程,即建立中斷請求申請中斷的過程,即建立中斷請求標(biāo)志位標(biāo)志位IE0IE0、IE1IE1、TF0TF0、TF1TF1、TI/R

16、ITI/RI的過程的過程外部中斷請求:經(jīng)由引腳外部中斷請求:經(jīng)由引腳P3.2P3.2、P3.3P3.3向向CPUCPU申請中斷的過程。申請中斷的過程。外部中斷請求有兩種方式:低電平觸發(fā)和下降沿觸發(fā)。通過設(shè)置觸發(fā)外部中斷請求有兩種方式:低電平觸發(fā)和下降沿觸發(fā)。通過設(shè)置觸發(fā)方式控制位方式控制位IT0IT0、IT1IT1進(jìn)行選擇。進(jìn)行選擇。IT0=0IT0=0,表示為低電平觸發(fā)方式;,表示為低電平觸發(fā)方式;IT0=1IT0=1,表示為下降沿觸發(fā)方式。,表示為下降沿觸發(fā)方式。IT1IT1的情況類似。的情況類似。 外部中斷請求標(biāo)志存放在外部中斷請求標(biāo)志存放在IE0/IE1IE0/IE1中。中。IE0IE

17、0為中斷請求標(biāo)志位。當(dāng)有中為中斷請求標(biāo)志位。當(dāng)有中斷請求時斷請求時IE0IE0置置1 1。IE1IE1的情況類似。的情況類似。 內(nèi)部中斷請求:內(nèi)部中斷請求: 當(dāng)當(dāng)T0T0計數(shù)產(chǎn)生溢出時,由硬件置位計數(shù)產(chǎn)生溢出時,由硬件置位TF0TF0。當(dāng)。當(dāng)CPUCPU響應(yīng)中斷后,再由硬響應(yīng)中斷后,再由硬件將件將TF0TF0清清0 0。 T1T1的情況類似。的情況類似。當(dāng)串行口發(fā)送結(jié)束時,使當(dāng)串行口發(fā)送結(jié)束時,使TI=1TI=1;當(dāng)串行口接收結(jié)束時,使;當(dāng)串行口接收結(jié)束時,使RI=1RI=1。 CPUCPU響應(yīng)中斷后,由軟件將響應(yīng)中斷后,由軟件將TI/RITI/RI位清位清0 0。.2中斷響應(yīng)

18、中斷響應(yīng) CPUCPU對中斷請求進(jìn)行判斷,形成中斷矢量,轉(zhuǎn)入相應(yīng)對中斷請求進(jìn)行判斷,形成中斷矢量,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序的過程叫中斷響應(yīng)。的中斷服務(wù)程序的過程叫中斷響應(yīng)。 一、一、CPUCPU響應(yīng)中斷的基本條件響應(yīng)中斷的基本條件有中斷源提出中斷請求;有中斷源提出中斷請求;中斷總允許位中斷總允許位EAEA1 1,即,即CPUCPU中斷開放;中斷開放;申請中斷的中斷源的中斷允許位為申請中斷的中斷源的中斷允許位為1 1,即中斷源,即中斷源開放;開放;CPUCPU沒有響應(yīng)同級或更高優(yōu)先級的中斷;沒有響應(yīng)同級或更高優(yōu)先級的中斷;當(dāng)前指令執(zhí)行結(jié)束;當(dāng)前指令執(zhí)行結(jié)束;如果正在執(zhí)行的指令是如果正在執(zhí)行的指令是

19、RETIRETI或是訪問或是訪問IEIE、IPIP指指令。令。 CPUCPU在執(zhí)行在執(zhí)行RETIRETI或訪問或訪問IEIE、IPIP指令后,至指令后,至少還需要再執(zhí)行一條其它指令后才會響應(yīng)中斷請少還需要再執(zhí)行一條其它指令后才會響應(yīng)中斷請求。求。二、中斷響應(yīng)過程二、中斷響應(yīng)過程單片機(jī)在每個機(jī)器周期的單片機(jī)在每個機(jī)器周期的S5P2S5P2期間,順序期間,順序采樣每個中斷源,建立中斷請求標(biāo)志。在采樣每個中斷源,建立中斷請求標(biāo)志。在下一個機(jī)器周期按優(yōu)先級查詢中斷標(biāo)志,下一個機(jī)器周期按優(yōu)先級查詢中斷標(biāo)志,如查詢到有中斷標(biāo)志為如查詢到有中斷標(biāo)志為1 1,則按優(yōu)先級進(jìn)行,則按優(yōu)先級進(jìn)行中斷響應(yīng)。中斷響應(yīng)。

20、 硬件將程序計數(shù)器硬件將程序計數(shù)器PCPC的當(dāng)前內(nèi)容壓入堆棧的當(dāng)前內(nèi)容壓入堆棧保護(hù),然后將對應(yīng)的中斷矢量裝入程序計保護(hù),然后將對應(yīng)的中斷矢量裝入程序計數(shù)器數(shù)器PCPC,使程序轉(zhuǎn)向相應(yīng)的中斷。這相當(dāng),使程序轉(zhuǎn)向相應(yīng)的中斷。這相當(dāng)于執(zhí)行一條長調(diào)用指令。于執(zhí)行一條長調(diào)用指令。 中斷響應(yīng)過程中斷響應(yīng)過程中斷響應(yīng)過程: 保護(hù)斷點地址; 把程序轉(zhuǎn)向中斷服務(wù)程序的入口地址(通常稱矢量地址)執(zhí)行中斷服務(wù)程序。中斷響應(yīng)特別注意:這些工作是硬件自動完成的! 斷點地址中斷服務(wù)子程序的入口地址程序存儲器程序存儲器ROMROM0000H:復(fù)位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外

21、部中斷0入口000BH:定時器0溢出中斷入口0013H:外部中斷1入口001BH:定時器1溢出中斷入口使用時,通常在這些入口地址處存放一條長跳轉(zhuǎn)LCALL addr16指令,使程序跳轉(zhuǎn)到用戶安排的中斷服務(wù)程序起始地址上去!5個固定固定的中斷源矢量地址程序存儲器程序存儲器ROMROM0000H:復(fù)位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外部中斷0入口000BH:定時器0溢出中斷入口0013H:外部中斷1入口001BH:定時器1溢出中斷入口002AH包含T0中斷服務(wù)子程序的程序結(jié)構(gòu):ORG 0000HORG 0000HAJMP MAINORG 000BHORG

22、 000BHAJMP INTT0ORG 0100HORG 0100HMAIN: MOV A, #08 . .INTT0:MOV A, #03 . . RETI ENDAJMP MAINAJMP INTT0 5.3.3 5.3.3 中斷處理中斷服務(wù)程序從入口地址入口地址開始執(zhí)行,直到返回指令RETI為止,這個過程稱為中斷處理(執(zhí)行中斷服務(wù))。中斷服務(wù)子程序一般包括兩部分內(nèi)容,一是保護(hù)和恢復(fù)現(xiàn)場,二是中斷源服務(wù)(中斷事務(wù)處理)。中斷響應(yīng)入口地址入口地址RETI保護(hù)現(xiàn)場INTT0: PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中斷源服務(wù) POP PSW POP DPL P

23、OP DPH POP ACC RETI保護(hù)現(xiàn)場恢復(fù)現(xiàn)場關(guān)中斷保護(hù)現(xiàn)場開中斷中斷服務(wù)恢復(fù)現(xiàn)場開中斷中斷返回斷點地址由堆棧彈出保護(hù)和恢復(fù)現(xiàn)場之后開中斷,是為了允許響應(yīng)更高級別的中斷。保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場的過程中不允許中斷,以免現(xiàn)場遭到破壞。關(guān)中斷RETI指令功能:把斷點地址從堆棧取出,送到PC。并清除優(yōu)先級狀態(tài)觸發(fā)器。 特別注意:不能用RET指令代替RETI指令!中斷響應(yīng)中斷返回RETI.4中斷返回中斷返回 .5 5 中斷請求撤消中斷請求撤消外部中斷外部中斷INT0INT0、INT1INT1的中斷請求標(biāo)志的中斷請求標(biāo)志位位IE0IE0、IE1IE1在在CPUCPU響應(yīng)中

24、斷后,由硬件響應(yīng)中斷后,由硬件清清0 0撤消。撤消。定時定時/ /計數(shù)器計數(shù)器T0T0、T1T1溢出標(biāo)志溢出標(biāo)志TF0TF0、TF1TF1在在CPUCPU響應(yīng)中斷后,由硬件清響應(yīng)中斷后,由硬件清0 0撤撤消。消。串行口發(fā)送結(jié)束串行口發(fā)送結(jié)束/ /接收結(jié)束接收結(jié)束TI/RITI/RI在在 CPUCPU響應(yīng)中斷后,由軟件清響應(yīng)中斷后,由軟件清0 0撤消。撤消。.6 6中斷響應(yīng)時間中斷響應(yīng)時間中斷響應(yīng)時間是指中斷響應(yīng)時間是指CPUCPU檢測到中斷請求信號到轉(zhuǎn)入中斷檢測到中斷請求信號到轉(zhuǎn)入中斷服務(wù)程序所需要的時間。服務(wù)程序所需要的時間。若中斷檢測時正好是一條指令的最后若中斷檢測時正好是一

25、條指令的最后1 1個個機(jī)器周期,且機(jī)器周期,且不是不是RETIRETI或訪問或訪問IEIE、IPIP指令,則指令,則CPUCPU執(zhí)行執(zhí)行2 2個個機(jī)器周期的機(jī)器周期的長調(diào)用轉(zhuǎn)移指令即可執(zhí)行中斷服務(wù)程序,共長調(diào)用轉(zhuǎn)移指令即可執(zhí)行中斷服務(wù)程序,共1+2=31+2=3個個機(jī)器機(jī)器周期。周期。若中斷檢測時若中斷檢測時CPUCPU正在執(zhí)行正在執(zhí)行RETIRETI或訪問或訪問IEIE、IPIP指令的第指令的第一個機(jī)器周期,需一個機(jī)器周期,需2 2個個機(jī)器周期完成上述操作,若緊接著機(jī)器周期完成上述操作,若緊接著的下一條指令是乘法,則需的下一條指令是乘法,則需4 4個個機(jī)器周期,之后機(jī)器周期,之后CPUCPU

26、執(zhí)行執(zhí)行一條一條2 2個個機(jī)器周期的長調(diào)用轉(zhuǎn)移指令才可執(zhí)行中斷服務(wù)程機(jī)器周期的長調(diào)用轉(zhuǎn)移指令才可執(zhí)行中斷服務(wù)程序,故共需序,故共需8 8個個機(jī)器周期。機(jī)器周期。5.4 5.4 外部中斷源擴(kuò)展外部中斷源擴(kuò)展 MCS-51MCS-51單片機(jī)只提供了兩個外部中斷請求單片機(jī)只提供了兩個外部中斷請求輸入端,在實際應(yīng)用中,如果需要使用多于輸入端,在實際應(yīng)用中,如果需要使用多于兩個的外部中斷源,就必須進(jìn)行外部中斷源兩個的外部中斷源,就必須進(jìn)行外部中斷源的擴(kuò)展。常用的幾種外部中斷源擴(kuò)展方法是:的擴(kuò)展。常用的幾種外部中斷源擴(kuò)展方法是:利用單片機(jī)中的定時器利用單片機(jī)中的定時器/ /計數(shù)器計數(shù)器T0T0、T1T1來

27、來擴(kuò)展;擴(kuò)展;外接硬件電路并配合查詢程序擴(kuò)展;外接硬件電路并配合查詢程序擴(kuò)展;外接中斷控制芯片(如外接中斷控制芯片(如82598259)進(jìn)行擴(kuò)展)進(jìn)行擴(kuò)展。 1用定時器/計數(shù)器擴(kuò)展外部中斷源將定時器/計數(shù)器T0、T1設(shè)置為計數(shù)方式工作方式2負(fù)跳變觸發(fā)初值設(shè)為0FFH允許中斷當(dāng)計數(shù)輸入端發(fā)生一個負(fù)跳變時,計數(shù)器加1,便發(fā)生溢出,從而產(chǎn)生中斷。 ORG 0100H MOV TMOD,#06H ;設(shè)置定時器T0為工作方式2、計數(shù)模式 MOV TH0,#0FFH ;設(shè)置計數(shù)器初值 MOV TL0,#0FFH SETB ET0 ;允許定時器中斷SETB EA ;CPU開中斷SETB TR0 ;啟動定時器

28、T0初始化程序如下:2 2查詢方式擴(kuò)展外部中斷源多個中斷源通過一個中斷請求引腳申請中斷多個中斷源通過一個中斷請求引腳申請中斷中斷源內(nèi)部采用查詢方式確定中斷源內(nèi)部采用查詢方式確定例:通過例:通過OCOC門實現(xiàn)外部中斷源擴(kuò)展的基本原理如下圖所示門實現(xiàn)外部中斷源擴(kuò)展的基本原理如下圖所示參考程序如下:參考程序如下: ORG 0003H LJMP INTER_PRO ORG 0100H INTER_PRO: JNB P1.0 ,SUB0_PRO JNB P1.1, SUB1_PRO . JNB P1.7, SUB7_PRO . .中斷控制芯片(如)進(jìn)行擴(kuò)展中斷控制芯片(如)進(jìn)行擴(kuò)展 當(dāng)需要擴(kuò)展的外部中斷

29、源比較多時,可以當(dāng)需要擴(kuò)展的外部中斷源比較多時,可以使用專用中斷控制器使用專用中斷控制器82598259實現(xiàn)。一個實現(xiàn)。一個82598259可以直可以直接擴(kuò)展接擴(kuò)展8 8個中斷源,經(jīng)級聯(lián)后,最多可以擴(kuò)展個中斷源,經(jīng)級聯(lián)后,最多可以擴(kuò)展6464個中斷源。個中斷源。堆棧設(shè)置觸發(fā)方式設(shè)置中斷開放優(yōu)先級設(shè)置中斷應(yīng)用中斷應(yīng)用 8 8件事件事在入口放轉(zhuǎn)移指令保護(hù)/恢復(fù)現(xiàn)場開關(guān)中斷中斷標(biāo)志撤銷【例例】 按鍵中斷控制按鍵中斷控制LED LED ORG 0000HAJMP MAINORG 0003HCLR EA AJMP PINT0ORG 0100HMAIN : MOV SP,#3FHSETB EASETB E

30、X0CLR IT0 H : SJMP HORG 0200HPINT0:CPL P2.0WAIT: JNB P3.2, WAITSETB EARETIEND 例例 兩級中斷兩級中斷ORG 0000HORG 0000H; ;在在0000H0000H單元存放轉(zhuǎn)移指令單元存放轉(zhuǎn)移指令 LJMP START LJMP START ; ;轉(zhuǎn)移到主程序轉(zhuǎn)移到主程序ORG 0003HORG 0003H; ;外部中斷外部中斷INT0INT0入口入口 LJMP EXT0 LJMP EXT0 ; ;轉(zhuǎn)移到外部中斷轉(zhuǎn)移到外部中斷0 0的中斷服務(wù)程序的中斷服務(wù)程序ORG 0013HORG 0013H; ;外部中斷外部中

31、斷INT1INT1入口入口 LJMP EXT1 LJMP EXT1 ; ;轉(zhuǎn)移到外部中斷轉(zhuǎn)移到外部中斷1 1的中斷服務(wù)程序的中斷服務(wù)程序ORG 0030H ORG 0030H ; ;主程序從主程序從0030H0030H開始存放開始存放START: MOV IE,#10000101B START: MOV IE,#10000101B ;CPU;CPU、INT0INT0、INT1INT1中斷開放中斷開放 MOV IP,#00000100B MOV IP,#00000100B ;INT1;INT1高中斷優(yōu)先級高中斷優(yōu)先級 MOV TCON,#00000101B MOV TCON,#00000101B

32、 ;INT0;INT0、INT1INT1為下降沿觸發(fā)為下降沿觸發(fā) MOV SP,#3FH MOV SP,#3FH ; ;重置堆棧重置堆棧LOOP: MOV P1,#03H LOOP: MOV P1,#03H ; ;點亮點亮2 2只只LEDLED AJMP LOOP AJMP LOOP; ;等待中斷等待中斷EXT0: PUSH ACC EXT0: PUSH ACC ; ;堆棧保護(hù)堆棧保護(hù) PUSH PSWPUSH PSW MOV R2,#0AH MOV R2,#0AH ; ;閃爍閃爍1010次次LOOP1: MOV P1,#00H LOOP1: MOV P1,#00H ; ;使使LED0LED0

33、、LED1LED1滅滅 LCALL DELAYLCALL DELAY MOV P1,#01H MOV P1,#01H ; ;使使LED0LED0亮亮 LCALL DELAYLCALL DELAY DJNZ R2,LOOP1 DJNZ R2,LOOP1 ; ;循環(huán)循環(huán)1010次次 POP PSWPOP PSW POP ACCPOP ACC RETIRETIEXT1: PUSH ACC EXT1: PUSH ACC ; ;堆棧保護(hù)堆棧保護(hù) PUSH PSWPUSH PSW MOV R3,#0AH MOV R3,#0AH ; ;閃爍閃爍1010次次LOOP2: MOV P1, #00H LOOP2:

34、 MOV P1, #00H ; ;使使LED0LED0、LED1LED1滅滅 LCALL DELAYLCALL DELAY MOV P1,#02H MOV P1,#02H ; ;使使LED1LED1亮亮 LCALL DELAYLCALL DELAY DJNZ R3,LOOP2 DJNZ R3,LOOP2 ; ;循環(huán)循環(huán)1010次次 POP PSWPOP PSW POP ACC POP ACC RETI RETI ; ;中斷返回中斷返回DELAY: MOV R5, #20 DELAY: MOV R5, #20 ; ;延時延時200ms200ms子程序子程序 DLY1: MOV R6, #200D

35、LY1: MOV R6, #200 DLY2: MOV R7, #200DLY2: MOV R7, #200 DJNZ R7, $ DJNZ R7, $ DJNZ R6, DLY2 DJNZ R6, DLY2 DJNZ R5, DLY1 DJNZ R5, DLY1 RET RET; ;中斷返回中斷返回 END END PtoteusPtoteus仿真仿真 全自動洗衣機(jī)工作過程中,當(dāng)遇到意外事件發(fā)生,如全自動洗衣機(jī)工作過程中,當(dāng)遇到意外事件發(fā)生,如衣物纏繞,或需要干預(yù)洗衣進(jìn)程時,如需要添加消衣物纏繞,或需要干預(yù)洗衣進(jìn)程時,如需要添加消毒液,就需要暫停當(dāng)前洗衣進(jìn)程,處理這些事件。毒液,就需要暫停當(dāng)

36、前洗衣進(jìn)程,處理這些事件。假設(shè)全自動洗衣機(jī)有假設(shè)全自動洗衣機(jī)有8 8個流程,用個流程,用8 8個指示燈表示;個指示燈表示;用用8 8個按鍵進(jìn)行選擇控制。當(dāng)某個流程工作時,對應(yīng)個按鍵進(jìn)行選擇控制。當(dāng)某個流程工作時,對應(yīng)的指示燈點亮。當(dāng)按下按鍵的指示燈點亮。當(dāng)按下按鍵K K時,中斷正在進(jìn)行的流時,中斷正在進(jìn)行的流程,對應(yīng)的流程指示燈閃爍,洗衣機(jī)進(jìn)入等待狀態(tài);程,對應(yīng)的流程指示燈閃爍,洗衣機(jī)進(jìn)入等待狀態(tài);再次按下再次按下K K時,指示燈停止閃爍,變成點亮狀態(tài),表時,指示燈停止閃爍,變成點亮狀態(tài),表示洗衣機(jī)恢復(fù)原來被中斷的洗衣流程。示洗衣機(jī)恢復(fù)原來被中斷的洗衣流程。X111.0592MHzC133pC

37、233pVCCXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3

38、.6/WR16P3.5/T115U180C51PROGRAM=Text1.HEXSRCFILE=Text1.ASMR11kR21kR31kR41kR51kR61kR71kR81kVCCU2NOTU3NOTU4NOTU5NOTU6NOTU7NOTU8NOTU9NOTR16100R14100R13100R12100R11100R10100R15100R9100123U10:A7400456U10:B7400R171kR181kSW1SW-SPDTVCCQ12N5551R191kR201kVCCVCCD1D2D3D4D5D6D7D8LS1SPEAKERORG 0000H ORG 0000H ;在;在0000H0000H單元存放轉(zhuǎn)移指令單元存放轉(zhuǎn)移指令 AJMP MAIN AJMP MAIN ;轉(zhuǎn)移至主程序;轉(zhuǎn)移至主程序 ORG 0003H ORG 0003H ;INT0INT0中斷入口中斷入口 AJMP WBI AJMP WBI ;轉(zhuǎn)中斷服務(wù)程序;轉(zhuǎn)中斷服務(wù)程序 ORG 0030H ORG 0030H ;主程序;主程序 MAIN: MOV P2MAIN: MOV P2,#00H #00H ;全燈滅;全燈滅 SETB IT0 SE

溫馨提示

  • 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

提交評論