51單片機(jī)(中斷)9.ppt_第1頁
51單片機(jī)(中斷)9.ppt_第2頁
51單片機(jī)(中斷)9.ppt_第3頁
51單片機(jī)(中斷)9.ppt_第4頁
51單片機(jī)(中斷)9.ppt_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、51單片機(jī)接口,中斷系統(tǒng),微機(jī)的輸入/輸出方式,無條件傳送:CPU直接與外設(shè)傳送數(shù)據(jù)而不必預(yù)先檢查外設(shè)狀態(tài) 條件傳送:又稱為查詢方式, CPU與外設(shè)傳送數(shù)據(jù)之前,先檢查外設(shè)狀態(tài),只有在狀態(tài)滿足“準(zhǔn)備好”的情況下才可以傳送數(shù)據(jù)。,中斷傳送:中斷的情況下傳送數(shù)據(jù)。 DMA:外設(shè)不通過CPU,直接將數(shù)據(jù)存入存儲器,中斷的概念,中斷:計算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)異常情況或特殊請求時,計算機(jī)停止現(xiàn)行程序的運行,轉(zhuǎn)向這些異常情況或特殊請求的處理,處理結(jié)束后再返回現(xiàn)行程序的斷點處,繼續(xù)執(zhí)行原程序 中斷源:產(chǎn)生中斷的請求源。 中斷返回 中斷服務(wù),中斷的概念,服務(wù)程序的地址信息,使用“中斷向量”方式存放,C

2、PU的中斷機(jī)制會自動查表獲得服務(wù)程序地址,從而能轉(zhuǎn)入服務(wù)程序執(zhí)行。 中斷服務(wù)過程與子程序調(diào)用過程類似,所不同僅在于:通過向量表獲得服務(wù)程序地址。子程序地址通過指令中的Label直接獲得。 一些CPU除了硬件申請中斷外,還允許軟件通過中斷向量表調(diào)用子程序。這個功能稱為“軟中斷”或者“中斷調(diào)用”。此時的“中斷”概念轉(zhuǎn)化成“使用中斷矢量表”。,中斷優(yōu)先級別 MCS-51系列單片機(jī)系統(tǒng)允許有幾個中斷源,當(dāng)幾個中斷源同時向CPU請求中斷,要求為它們服務(wù)的時候,CPU優(yōu)先響應(yīng)哪一個中斷請求源呢?此時將優(yōu)先響應(yīng)優(yōu)先級別高的中斷請求源。所謂中斷優(yōu)先級別是指根據(jù)中斷源(所發(fā)生的實時事件)的輕重緩急排隊,優(yōu)先處理

3、最緊急事件的中斷請求。中斷優(yōu)先級別由編程或硬件設(shè)置或規(guī)定。,中斷嵌套 當(dāng)CPU正在處理一個中斷源請求的時候,又發(fā)生了另一個優(yōu)先級別比它高的中斷源請求,如果CPU能夠暫時終止執(zhí)行對原來中斷源的處理程序,轉(zhuǎn)而去處理優(yōu)先級別更高的中斷請求,待處理完后,再繼續(xù)執(zhí)行原來的低級中斷處理程序,這樣的過程稱為中斷嵌套。如圖11-1所示為2級中斷嵌套。,X86的中斷簡介(微機(jī)原理),X86中斷向量表存放在地址00:000000:03FFH,共1024個地址,256個向量。 每個向量占用4個字節(jié),它就是子程序的入口地址:段地址:偏移地址CS:IP 每個向量以編號排序:0FFH排序。(中斷向量號) 硬件中斷(事件中

4、斷)發(fā)生時,由8259A芯片發(fā)出此事件對應(yīng)的“中斷向量號”給CPU。 軟件中斷時,使用指令:INT nnH,nn為向量號。 CPU將向量號乘以4后查表并讀取服務(wù)程序地址到CS:IP,進(jìn)而轉(zhuǎn)入服務(wù)程序執(zhí)行。 可編程中斷控制器8259A可以對8個外部中斷進(jìn)行管理,也可以再擴(kuò)展下級8259A。,51單片機(jī)的中斷系統(tǒng),51單片機(jī)的中斷全部都是“事件”中斷,即:由硬件產(chǎn)生! 51單片機(jī)有5個中斷源,他們是:定時器2個,外部中斷2個,串行接口1個。 中斷產(chǎn)生原因:定時器溢出時;外部中斷引腳電平變低時;串行接口收到數(shù)或者數(shù)據(jù)發(fā)送完畢時。其中之一“事件發(fā)生”時,都可以申請中斷。 51單片機(jī)的中斷都是“可屏蔽”

5、的,即可以關(guān)斷某些不需要的中斷源。,中斷響應(yīng)過程,中斷響應(yīng)的條件:1.事件發(fā)生。2.此中斷被“允許/開通”時并具有更高優(yōu)先級別時。 CPU執(zhí)行完當(dāng)前指令后,將當(dāng)前PC值壓入堆棧,然后按照中斷源不同,將中斷入口地址裝入PC,讀取中斷服務(wù)程序指令并執(zhí)行之。此過程將會耗去至少4個機(jī)器周期。 當(dāng)執(zhí)行到指令RETI時,從堆棧中讀回保存的原PC值并裝入PC,讀取中斷前的“下一條指令”回到斷點處繼續(xù)執(zhí)行。 回到斷點處執(zhí)行一條指令,然后檢測是否有中斷申請,如果有,就重復(fù)2過程。 51單片機(jī)中斷入口地址是固定的,CPU廠家設(shè)計為:不同中斷源對應(yīng)地址自動裝入PC。 有時也將中斷響應(yīng)過程解釋為CPU(硬件)自動執(zhí)行

6、一條長調(diào)用指令:LCALL 入口地址,51單片機(jī)的中斷入口地址,51中斷的入口地址是廠家規(guī)定的,廠家設(shè)計好的,不能改動!編程者必須按照規(guī)定設(shè)計?。承〤PU可以自己設(shè)定) C51使用: “ 中斷函數(shù)名 interrupt n using m” 定義中斷向量和寄存器組,其中n*8+3=入口地址, m為寄存器組號,外部中斷INT0,INT1,CPU可以響應(yīng)外部的中斷申請,只要把申請信號連接到引腳INT0或INT1便可。 INT0,INT1引腳電平由高變底就可申請中斷服務(wù)。 51單片機(jī)允許選擇“下降沿”或者“低電平”申請中斷,通過設(shè)置“IT0;IT1”控制位進(jìn)行選擇。 一旦以上信號變化,就會產(chǎn)生中斷

7、申請標(biāo)志“IE0;IE1” CPU每執(zhí)行一條指令后都要檢測引腳電平變化,因此其反應(yīng)時間最快為1個機(jī)器周期,低電平的時間至少保持1個機(jī)器周期以上。,INT1框圖與INT0一樣。 IT0=1 選擇“下降沿”觸發(fā) IT0=0 選擇“低電平”觸發(fā),“低電平”“下降沿”選擇參考,外部引入的中斷申請信號有時“低電平”時間很長,例如1秒周期的方波,此時低電平時間長達(dá)0.5秒! 如果中斷服務(wù)程序執(zhí)行時間2毫秒(約1500條指令,假定晶振12兆),那么服務(wù)結(jié)束時,INT引腳仍為“低電平”,于是再次進(jìn)入中斷服務(wù)!周而復(fù)始直到INT引腳變?yōu)楦唠娖?!這是不允許的。 如果采用“下降沿觸發(fā)”,以上情況可以避免。 許多外部

8、芯片在申請中斷期間,CPU對其訪問過后就能自動拆消“低電平”的申請信號,這時采用“低電平”觸發(fā)可以提高抗干擾能力。 一些教材推薦右圖電路進(jìn)行處理:在中斷服務(wù)程序中,通過P1.0送出負(fù)脈沖清除此申請信號。,定時器中斷和串口中斷,定時器溢出時,產(chǎn)生標(biāo)志:TF0和TF1,它們就可以申請中斷。 串行接口有一個發(fā)送緩沖器,其中的數(shù)據(jù)一位一位地順序發(fā)送,當(dāng)數(shù)據(jù)發(fā)送完畢,緩沖器“空”時,置標(biāo)志“TI” 串行接口有一個接收緩沖器,數(shù)據(jù)一位一位地接收,當(dāng)數(shù)據(jù)接收完畢,緩沖器“滿”時,置標(biāo)志“RI”,TI和RI之一變成1時,都會申請中斷。,中斷申請,5個中斷源6個標(biāo)志位,中斷申請,TCON討論,IT0,IT1外部

9、中斷觸發(fā)方式選擇,1選擇下降沿 IE0,IE1外部中斷申請標(biāo)志,1有申請 TR0,TR1定時器“啟停”控制,1啟動 TF0,TF1定時器溢出標(biāo)志,1有溢出 附:TI串口“發(fā)送完畢”標(biāo)志,1發(fā)送完成 附:RI串口“收到數(shù)據(jù)”標(biāo)志,1數(shù)據(jù)收到,中斷申請的撤銷,對IE0,IE1,TF0,TF1,這4個標(biāo)志可以通過執(zhí)行“RETI”指令自動清除。 一些教材說:中斷響應(yīng)后,硬件自動把標(biāo)志位清0,實際工作原理是“RETI”指令的效果。 對TI和RI,需要用指令CLR RI 和CLR TI 將其清除。 前面可以從“中斷入口地址”和中斷申請機(jī)制(RI+TI)看出,無論收到數(shù)或者發(fā)完數(shù),其中斷入口只有一個:地址0

10、023H。服務(wù)程序需要對這兩個標(biāo)志依次判斷后處理,因此不能簡單地進(jìn)行全部清除。例如對發(fā)送處理后,需要對TI清0,程序再判,如果RI=1則對接收處理,并對RI清0。 這些標(biāo)志使用過后,應(yīng)當(dāng)清除,否則將還會再次申請中斷。,SCON中斷相關(guān)位討論,SCON是串行接口控制寄存器 SM0SM2串口模式選擇位 REN串口允許接收 TB8,RB8串口數(shù)據(jù)第9位 TI串口數(shù)據(jù)發(fā)送完畢時自動置1,可用于申請中斷服務(wù),程序服務(wù)后用軟件清0。 RI串口收到數(shù)據(jù)時自動置1,可用于申請中斷服務(wù),程序服務(wù)后用軟件清0。,中斷控制,中斷允許寄存器IE,可以“位尋址”,正邏輯, 1允許 EA中斷允許總控 EX0INT0中斷允

11、許 ET0T0中斷允許 EX1INT1中斷允許 ET1T1中斷允許 ES串行接口中斷允許 ET2T2中斷允許(52單片機(jī)),中斷優(yōu)先寄存器IP,51單片機(jī)只允許兩層中斷嵌套。 IP=00時,某個正在執(zhí)行的中斷服務(wù)不會被其它中斷打斷,即:5個中斷是同級優(yōu)先的。 當(dāng)IP中某位被置1時,此中斷可以打斷其它正在服務(wù)的中斷,執(zhí)行新的中斷。 當(dāng)IP中所有位都置1時,就又形成了“同級優(yōu)先” 同級優(yōu)先情況時,如果若干中斷同時發(fā)生,CPU按照:“INT0-T0-INT1-T1-串口”順序依次完成服務(wù),中間不會發(fā)生“中斷嵌套”。 IP寄存器可以“位尋址” 普遍意義的優(yōu)先(升序):主程序普通中斷優(yōu)先的中斷。,中斷程

12、序必須保護(hù)現(xiàn)場,為什么要保護(hù)現(xiàn)場? 當(dāng)中斷服務(wù)時,服務(wù)程序需要用到一些寄存器,例如:A,Rn,PSW,DPTR等寄存器!如果被打斷的程序在這些寄存器中存著數(shù)據(jù),并且中斷返回后還要使用這些數(shù)據(jù)!那么中斷服務(wù)程序不應(yīng)當(dāng)破壞這些寄存器內(nèi)的數(shù)據(jù)。 將這些寄存器內(nèi)的數(shù)據(jù)設(shè)法保存/保護(hù)起來,稱為“保護(hù)現(xiàn)場”,保護(hù)現(xiàn)場的方法,切換Rn的寄存器“組”。 把一些寄存器內(nèi)容壓入堆棧。 服務(wù)程序沒用到的寄存器不必保存。 Rn寄存器組設(shè)計為一個級別用一組:最多使用3個組!,切換寄存器Rn方法: PUSH PSW MOV PSW,#000XX000B POP PSW RETI 紅色XX表示寄存器組號。也可以用SETB/

13、CLR修改RS1,RS1。 入棧方法: A用ACC代替 DPTR用DPH,DPL代替 最先入棧的寄存器最后出來,必須配對:有進(jìn)有出!,定時器 “定時中斷”舉例,假定使用T0每2mS產(chǎn)生一次中斷,用于調(diào)用動態(tài)顯示程序DISPLAY,主程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP DISPLAY ORG 0030H MAIN:,MAIN: MOV SP,#40H MOV WEIZHI,#00 MOV TMOD,#00000001B; T0方式1 MOV TH0,#0F8H; MOV TL0,#30H;F830H=63536=65536-2000 SETB TR0

14、 SETB ET0 SETB EA 其他程序略,中斷服務(wù)程序舉例,DISPLAY: PUSH ACC PUSH PSW SETB RS0 CLR RS1 CLR TR0 MOV TH0,#0F8H MOV TL0,#30H SETB TR0 MOV A,WEIZHI SWAP A MOV R1,A MOV A,WEIZHI ADD A,#BUFF ;顯示緩沖區(qū)地址 MOV R0,A,MOV A,R0 ORL A,R1 SETB P2.6 MOVX R0,A CLR P2.6 INC WEIZHI MOV A,WEIZHI CJNE A,#8,DSP0 DSP0: JC RETURN MOV W

15、EIZHI,#0 RETURN: POP PSW POP ACC RETI,顯示程序,動態(tài)顯示電路解說,顯示數(shù)據(jù)處理,顯示器地址:A14=1或者P2.6=1選中顯示鎖存器74LS273 74LS273鎖存CPU送來的8位數(shù)據(jù)(用MOVX指令,地址可用多種方法指定) 鎖存器低4位為顯示數(shù)據(jù)的BCD碼,經(jīng)74LS47譯碼驅(qū)動,送到數(shù)碼管“筆劃” 高4位為顯示“位置”。經(jīng)74LS138譯碼選擇其中一個數(shù)碼管,經(jīng)三極管驅(qū)動后將其點亮。 每送一個數(shù)據(jù),只有一個數(shù)碼管亮。 每個數(shù)碼管保持25mS時間發(fā)光,然后點亮另一個數(shù)碼管。 保證每秒鐘對8個數(shù)碼管刷新25次以上。否則顯示器有閃爍感。,11.3 中斷系統(tǒng)

16、應(yīng)用舉例,例1 利用AT89C51的外部中斷實現(xiàn)單步操作。 如圖11-5所示是實現(xiàn)單步操作的簡單電路工作原理圖。,工作原理:由于中斷處理程序中有RETI指令,所以AT89C51響應(yīng)中斷后,執(zhí)行完RETI須返回主程序執(zhí)行一條指令,然后才能響應(yīng)新的中斷。這樣,只要引腳平時為低電平,且編程為電平觸發(fā),則CPU響應(yīng)中斷,進(jìn)入中斷服務(wù)程序,并在該服務(wù)程序中停留,直到引腳上接收一個脈沖(從低高低),才返回主程序執(zhí)行一條指令,然后又立即進(jìn)入中斷服務(wù)程序,等待下一個脈沖的到來,又返回主程序執(zhí)行一條指令,如此反復(fù),直到執(zhí)行一個完整的程序。該單步操作可用作調(diào)試檢查程序。,ORG 0000H RESET:AJMP

17、MAIN;主程序 ORG 0003H AJMP INT0;中斷服務(wù)程序 ;初始化程序段 MAIN: CLR IT0;設(shè)置為電平觸發(fā) SETB PX0 ;定義為高優(yōu)先級中斷 SETB EA ; 設(shè)置CPU開放中斷 SETB EX0 ;允許外部中斷中斷。 AJMP $ ;動態(tài)暫存 INT0: NOP HERE0:JNB P3.2,HERE0;=0,循環(huán)轉(zhuǎn)移 HERE1:JB P3.2,HERE1 ;=1,循環(huán)轉(zhuǎn)移 RETI ;中斷返回,例2 編制一段程序,使P1.0端口線上輸出周期為2ms的方波脈沖。設(shè)單片機(jī)晶振頻率Fosc6MHZ。 方法:利用定時器T0作1ms定時,達(dá)到定時值后引起中斷,在中斷

18、服務(wù)程序中,使P1.0的狀態(tài)取一次反,并再次定時1ms。 計算定時初值:機(jī)器周期MC12/fosc2us。所以定時lms所需的機(jī)器周期個數(shù)為500D,亦即0lF4H。設(shè)T0為工作方式1(16位方式),則定時初值是(01F4H)求補FEOCH,ORG 0000H RESET:AJMP MAIN;主程序 ORG 000BH AJMP IST0;轉(zhuǎn)入T0中斷服務(wù)程序入口地址IST0 ;初始化程序段 MAIN: MOV TMOD, #01H;T0為定時器狀態(tài),工作方式1 MOV TL0,#0CH;T0的低位定時初值 MOV TH0,#0FEH;T0的高位定時初值 MOV TCON,#10H;打開T0 SETB EA ;EA=1,即允許全局中斷 SETB ET0 ;1ET0=1,即允許T0中斷 AJMP $ ;動態(tài)暫存 IST0: MOV TL0,#0CH ;重置定時器初值 MOV TH0,#0FEH;重置定時器初值 CPL P1.0 ;P1.0取反 RET1 ;中斷返回,習(xí)題,1. 在一個MCS-

溫馨提示

  • 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

提交評論