![單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)第6章--中斷系統(tǒng)課件_第1頁(yè)](http://file4.renrendoc.com/view/7dc45aa6747b54687d035df45a042619/7dc45aa6747b54687d035df45a0426191.gif)
![單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)第6章--中斷系統(tǒng)課件_第2頁(yè)](http://file4.renrendoc.com/view/7dc45aa6747b54687d035df45a042619/7dc45aa6747b54687d035df45a0426192.gif)
![單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)第6章--中斷系統(tǒng)課件_第3頁(yè)](http://file4.renrendoc.com/view/7dc45aa6747b54687d035df45a042619/7dc45aa6747b54687d035df45a0426193.gif)
![單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)第6章--中斷系統(tǒng)課件_第4頁(yè)](http://file4.renrendoc.com/view/7dc45aa6747b54687d035df45a042619/7dc45aa6747b54687d035df45a0426194.gif)
![單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)第6章--中斷系統(tǒng)課件_第5頁(yè)](http://file4.renrendoc.com/view/7dc45aa6747b54687d035df45a042619/7dc45aa6747b54687d035df45a0426195.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6章 中斷系統(tǒng)單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)主要內(nèi)容1324中斷的基本概念單片機(jī)中斷請(qǐng)求中斷響應(yīng)中斷服務(wù)與中斷返回5中斷服務(wù)函數(shù)6單片機(jī)中斷應(yīng)用舉例6.1 中斷的基本概念6.1.1 中斷的概念中斷系統(tǒng)是為使CPU具有對(duì)外界緊急事件的實(shí)時(shí)處理能力而設(shè)置的。當(dāng)中央處理機(jī)CPU正在處理某件事的時(shí)候外界發(fā)生了緊急事件請(qǐng)求,要求CPU 暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個(gè)緊急事件,處理完以后,再回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作,這樣的過(guò)程稱為中斷。一個(gè)完整的中斷過(guò)程包括中斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)及中斷返回4個(gè)步驟,如圖6-1所示。打個(gè)比方,當(dāng)一位經(jīng)理正在處理文件時(shí),電話鈴響了(中斷請(qǐng)求),不得不在文件上做一
2、個(gè)記號(hào)(斷點(diǎn)地址,即返回地址),暫停工作,去接電話(響應(yīng)中斷),并處理電話請(qǐng)求(中斷服務(wù)),然后,再靜下心來(lái)(恢復(fù)中斷前狀態(tài)),接著處理文件(中斷返回)。中斷響應(yīng)過(guò)程示意圖6.1.2 中斷源引起CPU中斷的根源或原因,稱為中斷源。中斷源向CPU提出的處理請(qǐng)求,稱為中斷請(qǐng)求或中斷申請(qǐng)。IAP15W4K58S4系列單片機(jī)提供了21個(gè)中斷請(qǐng)求源,它們分別是:外部中斷0(INT0)、定時(shí)器0中斷、外部中斷1(INT1)、定時(shí)器1中斷、串口1中斷、A/D轉(zhuǎn)換中斷、低壓檢測(cè)(LVD)中斷、CCP/PWM/PCA中斷、串口2中斷、SPI中斷、外部中斷2(/INT2)、外部中斷3(/INT3)、定時(shí)器2中斷、
3、外部中斷4(/INT4)、串口3中斷、串口4中斷、定時(shí)器3中斷、定時(shí)器4中斷、比較器 中斷、PWM中斷及PWM異常檢測(cè)中斷。 除外部中斷2(/INT2)、外部中斷3(/INT3)、定時(shí)器T2 中斷、外部中斷4(/INT4)、串口3中斷、串口4中斷、定時(shí)器3中斷、定時(shí)器4中斷及比較器中斷固定是最低優(yōu)先級(jí)中斷外,其它的中斷都具有2個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)2級(jí)中斷服務(wù)程序嵌套。IAP15W4K58S4 中斷結(jié)構(gòu)圖6.1.3 中斷優(yōu)先級(jí)當(dāng)有多個(gè)中斷源同時(shí)向CPU提出中斷請(qǐng)求時(shí),就存在CPU先響應(yīng)哪個(gè)中斷請(qǐng)求、后響應(yīng)哪個(gè)中斷請(qǐng)求的問(wèn)題。為此,CPU要對(duì)每個(gè)中斷源事先確定一個(gè)優(yōu)先級(jí)別,稱為中斷優(yōu)先級(jí)。當(dāng)多個(gè)中
4、斷源同時(shí)提出中斷請(qǐng)求時(shí)CPU先響應(yīng)優(yōu)先級(jí)高的中斷請(qǐng)求,之后再響應(yīng)低優(yōu)先級(jí)的中斷請(qǐng)求。圖6-3 中斷嵌套6.2 單片機(jī)中斷請(qǐng)求6.2.1 中斷請(qǐng)求標(biāo)志1. TCON中的中斷標(biāo)志位TCON是定時(shí)器/計(jì)數(shù)器T0和T1的控制寄存器,鎖存了T0、T1的溢出中斷標(biāo)志位及外部中斷0和外部中斷1的中斷標(biāo)志位,地址為88H,復(fù)位值為00H。 特殊功能寄存器TCON中的各位分布如表6-1所示:位號(hào)B7B6B5B4B3B2B1B0位名稱TF1TR1TF0TR0IE1IT1IE0IT0TCON寄存器中和中斷請(qǐng)求及控制相關(guān)的位主要有:TF1:T1溢出中斷標(biāo)志。T1被允許計(jì)數(shù)以后,從初值開(kāi)始加1計(jì)數(shù)。當(dāng)產(chǎn)生溢出時(shí)由硬件自
5、動(dòng)使TF1置“1”,向CPU請(qǐng)求中斷,一直保持到CPU響應(yīng)中斷時(shí),才由硬件清“0”(也可由查詢軟件清“0”)。TR1:定時(shí)器1的運(yùn)行控制位。TF0:T0溢出中斷標(biāo)志。T0被允許計(jì)數(shù)以后,從初值開(kāi)始加1計(jì)數(shù),當(dāng)產(chǎn)生溢出時(shí),由硬件自動(dòng)使TF0置“1”,向CPU請(qǐng)求中斷,一直保持CPU響應(yīng)該中斷時(shí),才由硬件清0(也可由查詢 軟件清0)。TR0:定時(shí)器0的運(yùn)行控制位。TCON寄存器中和中斷請(qǐng)求及控制相關(guān)的位主要有:IE1:外部中斷1 (INT1/P3.3)中斷請(qǐng)求標(biāo)志。IE1=1,外部中斷向CPU請(qǐng)求中斷,當(dāng)CPU響應(yīng)該中斷時(shí)由硬件對(duì)IE1清“0”。IT1:外部中斷1中斷源類型選擇位。IT1=0,IN
6、T1/P3.3引腳上的上升沿或下降沿信號(hào)均可觸發(fā)外部中斷1。IT1=1,外部中斷1為下降沿觸發(fā)方式。 IE0:外部中斷0 (INT0/P3.2)中斷請(qǐng)求標(biāo)志。IE0=1,外部中斷0向CPU請(qǐng)求中斷,當(dāng)CPU響應(yīng)外部中斷時(shí),由硬件對(duì)IE0清“0”。IT0:外部中斷0中斷源類型選擇位。IT0=0,INT0/P3.2引腳上的上升沿或下降沿均可觸發(fā)外部中斷0。IT0=1,外部中斷0為下降沿觸發(fā)方式。2SCON中的中斷標(biāo)志位SCON是串行口1控制寄存器,鎖存了串行口1的發(fā)送、接收中斷標(biāo)志位TI和RI。地址為98H,復(fù)位值為00H。特殊功能寄存器SCON中各位分布如表6-2所示:位號(hào)B7B6B5B4B3B
7、2B1B0位名稱SM0/FESM1SM2RENTB8RB8TIRITI:串行口1發(fā)送中斷標(biāo)志。串行口1以方式0發(fā)送時(shí),每當(dāng)發(fā)送完8位數(shù)據(jù),由硬件置1;若以方式1、方式2或方式3發(fā)送時(shí),在發(fā)送停止位的開(kāi)始時(shí)置TI=1表示串行口1正在向CPU 申請(qǐng)中斷(發(fā)送中斷)。值得注意的是,CPU響應(yīng)發(fā)送中斷請(qǐng)求,轉(zhuǎn)向執(zhí)行中斷服務(wù)程序 時(shí)并不將TI清零,TI必須由用戶在中斷服務(wù)程序中清零。RI:串行口 1接收中斷標(biāo)志若串行口1允許接收且以方式0工作,則每當(dāng)接收到第8位數(shù)據(jù)時(shí)置1;若以方式1、2、3工作且SM2=0時(shí),則每當(dāng)接收到停止位的中間時(shí)置1;當(dāng)串行口以方式2或方式3工作且SM2=1時(shí),則僅當(dāng)接收到的第9
8、位數(shù)據(jù)RB8為1后,同時(shí)還要接收到停止位的中間時(shí)置RI為1表示串行口1正向CPU申請(qǐng)中斷(接收中斷),RI必須由用戶的中斷服務(wù)程序清零。3ADC_CONTR中的中斷標(biāo)志位ADC_CONTR是ADC控制寄存器,鎖存了A/D轉(zhuǎn)換結(jié)束中斷標(biāo)志ADC_FLAG。地址為BCH,復(fù)位值為00H。特殊功能寄存器ADC_CONTR中的各位分布如表6-6所示:位號(hào)B7B6B5B4B3B2B1B0位名稱ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0ADC_CONTR中的中斷標(biāo)志位ADC_POWER:ADC電源控制位。當(dāng)ADC_POWER=0時(shí),關(guān)閉ADC電源;
9、當(dāng)ADC_PWOER=1時(shí),打開(kāi)ADC電源。ADC_FLAG: ADC轉(zhuǎn)換結(jié)束標(biāo)志位,可用于請(qǐng)求A/D轉(zhuǎn)換的中斷。當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG=1,要用軟件清0。不管是A/D轉(zhuǎn)換完成后由該位申請(qǐng)產(chǎn)生中斷,還是由軟件查詢?cè)摌?biāo)志位A/D轉(zhuǎn)換是否結(jié)束,當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG=1,一定要軟件清0?!局攸c(diǎn)】ADC_START:ADC轉(zhuǎn)換啟動(dòng)控制位,設(shè)置為“1”時(shí),開(kāi)始轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后為0。A/D轉(zhuǎn)換控制寄存器ADC_CONTR中的其他位與中斷無(wú)關(guān),在此不作介紹。4PCON中的中斷標(biāo)志位PCON是電源控制寄存器,鎖存了低電壓檢測(cè)中斷標(biāo)志位LVDF。地址為87H,復(fù)位值為00H。特殊功
10、能寄存器PCON中各位分布如表6-7所示:位號(hào)B7B6B5B4B3B2B1B0位名稱SMODSMOD0LVDFPOFGF1GF0PDIDLPCON中的中斷標(biāo)志位LVDF:低壓檢測(cè)標(biāo)志位,同時(shí)也是低壓檢測(cè)中斷請(qǐng)求標(biāo)志位。在正常工作和空閑工作狀態(tài)時(shí),如果內(nèi)部工作電壓Vcc低于低壓檢測(cè)門檻電壓,該位自動(dòng)置1,與低壓檢測(cè)中斷是否被允許無(wú)關(guān)。即在內(nèi)部工作電壓Vcc低于低壓檢測(cè)門檻電壓時(shí),不管有沒(méi)有允許低壓檢測(cè)中斷,該位都自動(dòng)為1。該位要用軟件清0,清0后如內(nèi)部工作電壓Vcc繼續(xù)低于低壓檢測(cè)門檻電壓,該位又被自動(dòng)設(shè)置為1。在進(jìn)入掉電工作狀態(tài)前,如果低壓檢測(cè)電路未被允許可產(chǎn)生中斷,則在進(jìn)入掉電模式 后,該低
11、壓檢測(cè)電路不工作以降低功耗。如果被允許可產(chǎn)生低壓檢測(cè)中斷,則在進(jìn)入掉電模式后,該低壓檢測(cè)電路繼續(xù)工作,在內(nèi)部工作電壓Vcc低于低壓檢測(cè)門檻電壓后,產(chǎn)生低壓檢測(cè)中斷,可將MCU從掉電狀態(tài)喚醒。電源控制寄存器PCON中的其他位與低壓檢測(cè)中斷無(wú)關(guān),在此不作介紹5CCON中的中斷標(biāo)志位CCON是PCA控制寄存器,鎖存了PCA計(jì)數(shù)器溢出中斷標(biāo)志位CF及CCF2、CCF1、CCF0。地址為D8H.,復(fù)位值為00H。特殊功能寄存器CCON中各位分布如表6-8所示:位號(hào)B7B6B5B4B3B2B1B0位名稱CFCR-CCF2CCF1CCF0CCON中的中斷標(biāo)志位CF:PCA計(jì)數(shù)器溢出標(biāo)志位。當(dāng)PCA計(jì)數(shù)溢出時(shí)
12、,由硬件將CF置1,并向CPU發(fā)出中斷請(qǐng)求。CPU響應(yīng)該中斷后不能通過(guò)硬件將CF位清0,用戶必須通過(guò)軟件將該位清零。CCF2/CCF1/CCF0:PCA各模塊的中斷標(biāo)志位。其中CCF2對(duì)應(yīng)模塊2,CCF1對(duì)應(yīng)模塊1,CCF0對(duì)應(yīng)模塊0。當(dāng)出現(xiàn)匹配或捕獲時(shí)由硬件將對(duì)應(yīng)標(biāo)志位置1,并向CPU發(fā)出中斷請(qǐng)求。CPU響應(yīng)該中斷后不能通過(guò)硬件將CCF2/CCF1/CCF0位清0,用戶必須通過(guò)軟件將該位清0。在中斷服務(wù)程序中,通過(guò)判斷各標(biāo)志位以確定是哪個(gè)模塊產(chǎn)生了中斷。6SPSTAT中的中斷標(biāo)志位SPSTAT是SPI狀態(tài)寄存器,鎖存了SPI傳輸完成中斷標(biāo)志位SPIF。地址為CDH,復(fù)位值為00H。特殊功能寄
13、存器SPSTAT中各位分布如表6-9:位號(hào)B7B6B5B4B3B2B1B0復(fù)位值SPIFWOOL- SPSTAT中的中斷標(biāo)志位SPIF為SPI傳輸完成的中斷標(biāo)志位。當(dāng)一次SPI傳輸完成時(shí),由硬件將SPIF位置1,并向CPU發(fā)出中斷請(qǐng)求。CPU響應(yīng)該中斷后不能通過(guò)硬件將SPIF位清零,用戶必須通過(guò)軟件向該位寫1而清零?!局匾客獠恐袛?、外部中斷3及外部中斷4只能在下降沿觸發(fā),且這幾個(gè)中斷標(biāo)志位對(duì)用戶可不見(jiàn)。當(dāng)對(duì)應(yīng)的中斷響應(yīng)后或在EXn=0(n=2、3、4)時(shí),這些中斷請(qǐng)求標(biāo)志位會(huì)自動(dòng)被清零。定時(shí)器T2的中斷請(qǐng)求標(biāo)志位對(duì)用戶也是可不見(jiàn)的。當(dāng)T2的中斷被響應(yīng)后或ET2=0時(shí),該中斷標(biāo)志位會(huì)自動(dòng)被清
14、零。6.2.2 中斷允許的控制1. 中斷允許寄存器IE地址A8H,可位尋址,復(fù)值為00H。如表6-10所示:位號(hào)B7B6B5B4B3B2B1B0位名稱EAELVDEADCESET1EX1ET0EX0 中斷允許寄存器IEEA:CPU的總中斷允許控制位,EA=1,CPU開(kāi)放中斷,EA=0,CPU屏蔽所有的中斷申請(qǐng)。EA的作用是使中斷允許形成多級(jí)控制。即各中斷源首先受EA控制;其次還受各中斷源自己的中斷允許控制位控制。ELVD:低壓檢測(cè)中斷允許位,ELVD=1,允許低壓檢測(cè)中斷,ELVD=0,禁止低壓檢測(cè)中斷。EADC:A/D轉(zhuǎn)換中斷允許位,EADC=1,允許A/D轉(zhuǎn)換中斷,EADC=0,禁止A/D
15、轉(zhuǎn)換中斷。ES:串行口1中斷允許位,ES=1,允許串行口1中斷,ES=0,禁止串行口1中斷。 中斷允許寄存器IEET1:定時(shí)/計(jì)數(shù)器T1的溢出中斷允許位,ET1=1,允許T1中斷,ET1=0,禁止T1中斷。EX1:外部中斷1中斷允許位,EX1=1,允許外部中斷1中斷,EX1=0,禁止外部中斷1中斷。ET0 :T0的溢出中斷允許位,ET0=1允許T0中斷,ET0=0禁止T0中斷。EX0 :外部中斷0中斷允許位,EX0=1允許中斷,EX0=0禁止中斷。2. 外部中斷允許和時(shí)鐘輸出寄存器INT_CLKO(AUXR2)地址為8FH,復(fù)位值為00H。如表6-12所示:位號(hào)B7B6B5B4B3B2B1B0
16、位名稱-EX4EX3EX2MCKO_S2T2CLKOT1CLKOT0CLKO 外部中斷允許和時(shí)鐘輸出寄存器INT_CLKO(AUXR2)EX4:外部中斷4()中斷允許位,EX4=1允許中斷,EX4=0禁止中斷。外部中斷4()只能下降沿觸發(fā)。EX3:外部中斷3()中斷允許位,EX3=1允許中斷,EX3=0禁止中斷。外部中斷3()也只能下降沿觸發(fā)。EX2:外部中斷2()中斷允許位,EX2=1允許中斷,EX2=0禁止中斷。外部中斷2()同樣只能下降沿觸發(fā)。MCKO_S2,T2CLKO,T1CLKO,T0CLKO與中斷無(wú)關(guān),在此不作介紹。IAP15W4K58S4單片機(jī)系統(tǒng)復(fù)位后,所有中斷源的中斷允許控
17、制位以及CPU中斷控制位(EA)均被清零,即禁止所有中斷。一個(gè)中斷要處于允許狀態(tài),必須滿足兩個(gè)條件:一是總中斷(CPU中斷)允許位EA為1,二是該中斷允許位為1。3. 中斷優(yōu)先級(jí)控制寄存器IP地址為B8H,可位尋址,復(fù)位值為00H。其格式如表6-13所示:位號(hào)B7B6B5B4B3B2B1B0位名稱PPCAPLVDPADCPSPT1PX1PT0PX0 中斷優(yōu)先級(jí)控制寄存器IPPPCA:PCA中斷優(yōu)先級(jí)控制位。當(dāng)PPCA=0時(shí),PCA中斷為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PPCA=1時(shí),PCA中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。PLVD:低壓檢測(cè)中斷優(yōu)先級(jí)控制位。當(dāng)PLVD=0時(shí),低壓檢測(cè)中斷為最低優(yōu)
18、先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PLVD=1時(shí),低壓檢測(cè)中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。PADC:A/D轉(zhuǎn)換中斷優(yōu)先級(jí)控制位。當(dāng)PADC=0時(shí),A/D轉(zhuǎn)換中斷為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PADC=1時(shí),A/D轉(zhuǎn)換中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。PS:串口 1中斷優(yōu)先級(jí)控制位。當(dāng)PS=0時(shí),串口 1中斷為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PS=1時(shí),串口 1中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。 中斷優(yōu)先級(jí)控制寄存器IPPT1:定時(shí)器1中斷優(yōu)先級(jí)控制位。當(dāng)PT1=0時(shí),定時(shí)器1中斷為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PT1=1時(shí),定時(shí)器1中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。PX1:外部中斷1優(yōu)先級(jí)控制位。當(dāng)P
19、X1=0時(shí),外部中斷1為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PX1=1時(shí),外部中斷1為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。PT0:定時(shí)器0中斷優(yōu)先級(jí)控制位。當(dāng)PT0=0時(shí),定時(shí)器0中斷為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PT0=1時(shí),定時(shí)器0中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。PX0:外部中斷0優(yōu)先級(jí)控制位。當(dāng)PX0=0時(shí),外部中斷0為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0);當(dāng)PX0=1時(shí),外部中斷0為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)。6.3 中斷響應(yīng)6.3.1 中斷響應(yīng)時(shí)間在中斷允許的條件下,中斷源發(fā)出中斷請(qǐng)求后,CPU肯定會(huì)響應(yīng)中斷,但若有下列任何一種情況存在,中斷響應(yīng)會(huì)受到阻斷,會(huì)不同程度地增加CPU響應(yīng)中斷的時(shí)間。(1)C
20、PU正在執(zhí)行同級(jí)或高級(jí)優(yōu)先級(jí)的中斷(2)正在執(zhí)行RETI中斷返回指令或訪問(wèn)與中斷有關(guān)的寄存器指令,如訪問(wèn)IE和IP的指令。(3)當(dāng)前指令未執(zhí)行完。 若存在上述任何一種情況,中斷查詢結(jié)果即被取消,CPU不響應(yīng)中斷請(qǐng)求,而在下一指令周期繼續(xù)查詢;若條件滿足,CPU在下一指令周期響應(yīng)中斷。 在每個(gè)指令周期的最后時(shí)刻,CPU對(duì)各中斷源采樣,并設(shè)置相應(yīng)的中斷標(biāo)志位;CPU在下一個(gè)指令周期的最后時(shí)刻按優(yōu)先級(jí)順序查詢各中斷標(biāo)志,如查到某個(gè)中斷標(biāo)志為“1”,將在下一個(gè)指令周期按優(yōu)先級(jí)的高低順序進(jìn)行處理。6.3.2 中斷響應(yīng)過(guò)程中斷響應(yīng)過(guò)程包括保護(hù)斷點(diǎn)和將程序轉(zhuǎn)向中斷服務(wù)程序的入口地址。CPU響應(yīng)中斷時(shí),將相應(yīng)
21、的優(yōu)先級(jí)狀態(tài)觸發(fā)器置“1”,然后由硬件自動(dòng)產(chǎn)生一個(gè)長(zhǎng)調(diào)用指令LCALL。此指令首先把斷點(diǎn)地址壓入堆棧保護(hù),再將中斷服務(wù)程序的入口地址送到程序計(jì)數(shù)器PC,使程序轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序。IAP15W4K58S4單片機(jī)各個(gè)中斷源中斷響應(yīng)的入口地址由硬件事先設(shè)定,如表6-16所示:其中,中斷號(hào)是在C語(yǔ)言程序中編寫中斷函數(shù)使用的。在中斷函數(shù)中,中斷號(hào)與各中斷源是一一對(duì)應(yīng)的,不能混淆。6.3.3 中斷請(qǐng)求標(biāo)志的撤銷問(wèn)題CPU響應(yīng)中斷請(qǐng)求后即進(jìn)入中斷服務(wù)程序。在中斷返回前,應(yīng)撤除該中斷請(qǐng)求;否則,會(huì)重復(fù)引起中斷而導(dǎo)致錯(cuò)誤。IAP15W4K58S4單片機(jī)各中斷源中斷請(qǐng)求撤除的方法不盡相同,如下所示:(1)定時(shí)
22、器中斷請(qǐng)求的撤除:對(duì)于定時(shí)器/計(jì)數(shù)器T0或T1溢出中斷,CPU在響應(yīng)中斷后,即由硬件自動(dòng)清除其中標(biāo)志位TF0或TF1,無(wú)需采取其他措施。定時(shí)器T2、T3、T4中斷的中斷請(qǐng)求標(biāo)志位被隱藏起來(lái),對(duì)用戶是不可見(jiàn)的。當(dāng)響應(yīng)的服務(wù)程序執(zhí)行后,這些中斷請(qǐng)求標(biāo)志位自動(dòng)被清零。(2)串行口1中斷請(qǐng)求的撤除:對(duì)于串行口1中斷,CPU在響應(yīng)之后,硬件不會(huì)自動(dòng)清除中斷請(qǐng)求標(biāo)志位TI或RI,必須在中斷服務(wù)程序中,在判別出是TI還是RI引起的中斷后,再用軟件將其清除。(3)外部中斷請(qǐng)求的撤除:外部中斷0和外部中斷1的觸發(fā)方式有ITx(x=0,1)設(shè)置,但無(wú)論ITx(x=0,1)設(shè)置為“0”還是“1”,都屬于邊沿觸發(fā)。C
23、PU在響應(yīng)中斷后,由硬件自動(dòng)清除其中斷請(qǐng)求標(biāo)志位IE0或IE1,無(wú)需采取其他措施。外部中斷2、外部中斷3、外部中斷4的中斷請(qǐng)求標(biāo)志雖然是隱含的,但同樣屬于邊沿觸發(fā)。CPU在響應(yīng)中斷后,由硬件自動(dòng)清除其中斷標(biāo)志位,無(wú)需采取其他措施。注:IT:Interrupt Trigger(4)電源低電壓檢測(cè)中斷:電源低電壓檢測(cè)中斷的中斷請(qǐng)求標(biāo)志位,在中斷響應(yīng)后,不會(huì)自動(dòng)清零,需用軟件清除。6.4 中斷服務(wù)與中斷返回中斷請(qǐng)求的識(shí)別、中斷優(yōu)先級(jí)的判斷、響應(yīng)中斷的各種動(dòng)作是由CPU自動(dòng)完成的,而中斷處理與中斷返回需要由開(kāi)發(fā)者編寫的中斷服務(wù)程序來(lái)完成。在編寫中斷服務(wù)程序時(shí)要考慮下列問(wèn)題:(1)因?yàn)楦髦袛嘣吹闹袛喾?wù)
24、程序入口地址僅相隔8個(gè)字節(jié),一般容納不下中斷服務(wù)程序的執(zhí)行代碼,所以通常在中斷服務(wù)程序的入口處存放一條無(wú)條件轉(zhuǎn)移指令,在CPU響應(yīng)中斷時(shí)轉(zhuǎn)移到實(shí)際中斷服務(wù)程序的入口去執(zhí)行。6.4 中斷服務(wù)與中斷返回(2)如果在執(zhí)行實(shí)際中斷服務(wù)程序的過(guò)程中不允許高級(jí)別的中斷打斷程序的執(zhí)行,需要在實(shí)際中斷服務(wù)程序的入口處用軟件屏蔽CPU的中斷,而在中斷返回前再用軟件打開(kāi)CPU中斷。(3)如果在中斷服務(wù)程序中要使用主程序(或能夠被該中斷源中斷的其他程序)所用的寄存器或存儲(chǔ)單元,就需要對(duì)它們進(jìn)行保護(hù),即保護(hù)現(xiàn)場(chǎng)。當(dāng)然,在保護(hù)現(xiàn)場(chǎng)之前應(yīng)先屏蔽CPU的中斷。6.4 中斷服務(wù)與中斷返回(4)因?yàn)樵贑PU響應(yīng)串行接口發(fā)送/接
25、收中斷時(shí)CPU不能使中斷標(biāo)志位自動(dòng)復(fù)位,因此要在中斷服務(wù)程序中使用軟件將其中斷標(biāo)志位復(fù)位。對(duì)電平型外部信號(hào)觸發(fā)中斷也要考慮類似的問(wèn)題。(5)如果在中斷服務(wù)程序中進(jìn)行了現(xiàn)場(chǎng)保護(hù),在中斷返回前一定要恢復(fù)現(xiàn)場(chǎng)。如果CPU的中斷被屏蔽了,一定要用軟件再打開(kāi)CPU中斷。然后才是中斷服務(wù)程序的最后一條語(yǔ)句RETI,從中斷服務(wù)程序返回主程序。6.4 中斷服務(wù)與中斷返回(6)為了使應(yīng)用系統(tǒng)能夠及時(shí)響應(yīng)各中斷源的中斷請(qǐng)求,中斷服務(wù)程序要盡可能簡(jiǎn)短,一些可以在主程序中完成的操作,應(yīng)安排在主程序中來(lái)完成,這樣可以減少中斷處理占用的時(shí)間,提高響應(yīng)速度。6.4 中斷服務(wù)與中斷返回中斷服務(wù)函數(shù)定義的一般形式為: 函數(shù)類型
26、 函數(shù)名(形式參數(shù)表)interrupt nusing m其中,關(guān)鍵字interrupt后面的n是中斷號(hào),n的取值范圍為0-31。編譯器從8n+3處產(chǎn)生中斷向量,具體的中斷號(hào)n和中斷向量取決于不同的單片機(jī)芯片。關(guān)鍵字using用于選擇工作寄存器組,m為對(duì)應(yīng)的寄存器組號(hào),m取值為0-3,對(duì)應(yīng)51單片機(jī)的0-3寄存器組。中斷源中斷號(hào)n中斷向量8n+3外部中斷000003H定時(shí)器/計(jì)數(shù)器中斷T01000BH外部中斷120013H定時(shí)器/計(jì)數(shù)器中斷T13001BH串行口1中斷40023HIAP15W4K58S4單片機(jī)常用的中斷源的中斷號(hào)如表6-17所示6.5 中斷服務(wù)函數(shù)對(duì)于匯編語(yǔ)言,通常在這些中斷響
27、應(yīng)的入口地址處存放一條無(wú)條件轉(zhuǎn)移指令,使程序跳轉(zhuǎn)到用戶安排的中斷服務(wù)程序的起始地址上去。例如:ORG 001BH ;T1中斷響應(yīng)的入口LJMP T1_ISR ;轉(zhuǎn)向T1中斷服務(wù)程序中斷號(hào)是在C語(yǔ)言程序中編寫中斷函數(shù)使用的,在中斷函數(shù)中中斷號(hào)與各中斷源是一一對(duì)應(yīng)的,不能混淆。例如:void INT0_ISR(void)interrupt0 /外部中斷0中斷函數(shù)void Timer0_ISR(void)interrupt1 /定時(shí)器T0中斷函數(shù)void INT1_ISR(void)interrupt2 /外部中斷1中斷函數(shù)void Timer1_ISR(void)interrupt3 /定時(shí)器T1
28、中斷函數(shù)void UART_ISR(void)interrupt4 /串行口1中斷函數(shù)void LVD_ISR(void)interrupt6 /LVD中斷函數(shù)例6.1 外部中斷應(yīng)用利用外部中斷0、外部中斷1控制LED燈,當(dāng)外部中斷0輸入時(shí),使LED1、LED2取反;當(dāng)外部中斷1輸入時(shí),使LED3、LED4取反。原理圖如圖6-4所示:6.6 IAP15W4K58S4單片機(jī)中斷應(yīng)用舉例C語(yǔ)言參考程序如下:#include iap15w4k58s4.h #define uchar unsigned char#define uint unsigned int/* 位定義*/sbit LED1= P1
29、0;sbit LED2= P11;sbit LED3= P12;sbit LED4= P13;void main( ) P1M0=0X00; P1M1=0X00; IT0 = 1; /外部中斷0為下降沿觸發(fā)方式 IT1 = 1; /外部中斷1為下降沿觸發(fā)方式EX0 = 1; /允許外部中斷0 EX1 = 1; /允許外部中斷1 EA = 1; /總中斷允許 while(1);void INT0_ISR(void) interrupt 0 LED1 = LED1; LED2 = LED2;void INT1_ISR(void) interrupt 2 LED3 = LED3; LED4 = LE
30、D4; 例6.2 單片機(jī)外部中斷的擴(kuò)展利用外部中斷輸入線(如INT0和INT1腳),每一中斷輸入線可以通過(guò)邏輯與(或邏輯)門電路的輸入端連接多個(gè)外部中斷源,同時(shí),利用并行輸入端口線作為多個(gè)中斷源的識(shí)別線。原理圖如圖6-5所示:圖6-5 一個(gè)外中斷擴(kuò)展成多個(gè)外中斷原理圖如圖6-6所示為一臺(tái)3機(jī)器故障檢測(cè)與指示系統(tǒng),當(dāng)無(wú)故障時(shí),LED3燈亮;當(dāng)有故障時(shí),LED3燈滅,0號(hào)故障時(shí),LED0燈亮,1號(hào)故障時(shí),LED1燈亮,2號(hào)故障時(shí),LED2燈亮。圖6-6 機(jī)器故障檢測(cè)與指示系統(tǒng)原理圖C語(yǔ)言參考程序如下所示:#include iap15w4k58s4.h sbit P10Pl0;sbit P11Pl1
31、;sbit Pl2Pl2;sbit Pl3Pl3;sbit P14Pl4;sbit P15Pl5;sbit Pl6Pl6;sbit Pl7Pl7;void INT0_ISR(void)interrupt 0P11P10; /故障指示燈狀態(tài)與故障信號(hào)狀態(tài)相反 P13P12;P15P14; void main(void)unsigned char i;IT01; /外部中斷0為下降沿觸發(fā)方式EX01; /允許外部中斷0 EA 1; /總中斷允許 while(1) iPl; if (!(i0 x15) /若沒(méi)有故障,點(diǎn)亮工作指示燈LED3 Pl70; else Pl71; /若有故障,熄滅工作指示燈
32、LED3 例6.3 利用定時(shí)器中斷用T1方式0實(shí)現(xiàn)定時(shí),在P1.0引腳輸出周期為10ms的方波。解:根據(jù)題意,采用T1方式0進(jìn)行定時(shí),因此(TMOD)=00H。因?yàn)榉讲ㄖ芷谑?0ms,因此T1的定時(shí)時(shí)間應(yīng)為5ms,每5ms時(shí)間到就對(duì)P1.0取反,就可實(shí)現(xiàn)在P1.0引腳輸出周期為10ms的方波。系統(tǒng)采用12M晶振,分頻系數(shù)為12,即定時(shí)脈鐘周期為1s,則T1的初值為:X = M 計(jì)數(shù)值= 65536 -5000 = 60536 =EC78H即:TH1 = ECH,TL1 = 78H。C語(yǔ)言參考程序如下所示:#include iap15w4k58s4.h /單片機(jī)IAP15W4K58S4頭文sbi
33、t Wave_out = P10;void Timer1_Init(void) /5ms12MHz AUXR &= 0 xBF; /定時(shí)器時(shí)鐘12T模式 TMOD &= 0 x00; /設(shè)置定時(shí)器模式 TL1 = 0 x78; /設(shè)置定時(shí)初值 TH1 = 0 xEC; /設(shè)置定時(shí)初值 TF1 = 0; /清除TF1標(biāo)志 TR1 = 1; /定時(shí)器1開(kāi)始計(jì) EA = 1; /總中斷打開(kāi) ET1 = 1; /定時(shí)器1中斷打開(kāi) void main( ) / 主函數(shù) P1M1=0X00; P1M0=0X00; Timer1_Init( ); while (1); /主循環(huán) void Timer1_is
34、r(void) interrupt 3 using 1 /中斷函數(shù) TL1 = 0 x78; /定時(shí)器初值 TH1= 0 xEC; /定時(shí)器初值 Wave_out = Wave_out; /每5ms取反,即產(chǎn)生10ms的方波6.6 IAP15W4K58S4單片機(jī)中斷應(yīng)用舉例串口1收到數(shù)據(jù),如果數(shù)據(jù)為“turnonled,LED點(diǎn)亮2秒后,再熄滅。波特率9600,數(shù)據(jù)位8,奇偶效驗(yàn)無(wú),停止位1,數(shù)據(jù)流控制無(wú)。C語(yǔ)言參考程序如下:#include iap15w4k58s4.h / 單片機(jī)iap15w4k58s4頭文件#include / 加入此頭文件后,可使用_nop_庫(kù)函數(shù)#include delay
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)排風(fēng)輸液管行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 抗過(guò)敏床罩行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 2025年電極氧化鎂粉項(xiàng)目可行性研究報(bào)告
- 割管機(jī)行業(yè)市場(chǎng)發(fā)展及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年度公司單位向個(gè)人提供自駕租車服務(wù)合同
- 2025年度公路運(yùn)輸合同車輛維護(hù)保養(yǎng)協(xié)議
- 2025年度汽車銷售代理傭金支付合同
- 2025年工業(yè)產(chǎn)品市場(chǎng)推廣合作合同模板
- 2025年度房地產(chǎn)開(kāi)發(fā)項(xiàng)目招投標(biāo)及合同風(fēng)險(xiǎn)評(píng)估
- 2025年度國(guó)際貿(mào)易貨物檢驗(yàn)檢疫采購(gòu)合同樣本
- 26個(gè)英文字母書(shū)寫(手寫體)Word版
- GB/T 13813-2023煤礦用金屬材料摩擦火花安全性試驗(yàn)方法和判定規(guī)則
- 動(dòng)物檢疫技術(shù)-動(dòng)物檢疫的方法方式(動(dòng)物防疫與檢疫技術(shù))
- DB31 SW-Z 017-2021 上海市排水檢測(cè)井圖集
- 日語(yǔ)專八分類詞匯
- GB/T 707-1988熱軋槽鋼尺寸、外形、重量及允許偏差
- GB/T 33084-2016大型合金結(jié)構(gòu)鋼鍛件技術(shù)條件
- 高考英語(yǔ)課外積累:Hello,China《你好中國(guó)》1-20詞塊摘錄課件
- 茶文化與茶健康教學(xué)課件
- 降水預(yù)報(bào)思路和方法
- 虛位移原理PPT
評(píng)論
0/150
提交評(píng)論