單片機中斷程序設計
,單片機技術與項目實踐,項目教學課件,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,任務三 單片機中斷程序設計,西安航空職業(yè)技術學院,自動化教研室 王曙霞,中斷處理過程,返回,中斷處理過程分為三個階段:,中斷響應、中斷處理和中斷返回。,一、,中斷響應,二、,中斷處理,(,又稱中斷服務,),三、,中斷返回,四、,中斷請求的撤除,任務三 單片機中斷程序設計,中斷的響應,中斷響應是在滿足,CPU,的中斷響應條件之后,,CPU,對中斷源中斷請求的回答,在這一階段,,CPU,要完成中斷服務以前的所有準備工作。這些準備工作包括保護斷點和把程序轉向中斷服務程序的,入口地址,(,通常稱矢量地址,),。,特別注意:,這些工作是硬件自動完成的!,入口地址示意圖如下:,任務三 單片機中斷程序設計,程序存儲器,ROM,0000H,:,復位后,程序的入口地址,(PC=0000H),0023H,:,串行口中斷入口,0003H,:,外部中斷,0,入口,000BH,:,定時器,0,溢出中斷入口,0013H,:,外部中斷,1,入口,001BH,:,定時器,1,溢出中斷入口,002AH,使用時,通常在這些入口地址處存放一條絕對跳轉指令,使程序跳轉到用戶安排的中斷服務程序起始地址上去!參見實訓,5,定時器中斷方式。,任務三 單片機中斷程序設計,中斷處理,中斷服務程序從入口地址開始執(zhí)行,直到返回指令,RETI,為止,這個過程稱為中斷處理,(,或中斷服務,),。此過程一般包括兩部分內容,,一是保護現場,二是處理中斷源的請求。,因為一般主程序和中斷服務程序都可能會用到累加器、,PSW,寄存器及其它一些寄存器。,CPU,在進入中斷服務程序后,用到上述寄存器時,就會破壞它原來存在寄存器中的內容,一旦中斷返回,將會造成主程序的混亂,因而在進入中斷服務程序后,一般要先保護現場,然后再執(zhí)行中斷處理程序,在返回主程序以前,再恢復現場。,任務三 單片機中斷程序設計,任務三 單片機中斷程序設計,中斷返回是指中斷服務完后,計算機返回到原來斷開的位置,(,即斷點,),,繼續(xù)執(zhí)行原來的程序。中斷返回由專門的中斷返回指令,RETI,來實現,該指令的功能是把斷點地址取出,送回到程序計數器,PC,中去。另外,它還通知中斷系統已完成中斷處理,將清除優(yōu)先級狀態(tài)觸發(fā)器。特別注意:,不能用,RET,指令代替,RETI,指令!,中斷返回,中斷處理過程示意圖,中斷源發(fā)中斷請求,中斷響應條件,是否滿足?,中斷是否受阻?,把,PC,斷點地址壓入堆棧,相應中斷源的中斷入口地址送入,PC,,,轉向中斷服務程序,N,Y,Y,N,由硬件,自動完成,任務三 單片機中斷程序設計,關中斷,保護現場,中斷服務,開中斷,關中斷,恢復現場,開中斷,中斷返回,斷點地址由堆棧彈入,PC,保護現場和恢復現場的過程中不允許中斷,以免現場遭到破壞。,保護和恢復現場之后的開中斷是為了允許有更高級中斷打斷此中斷服務程序。,中斷服務程序,硬件自動完成,任務三 單片機中斷程序設計,中斷請求的撤除,CPU,響應某中斷請求后,在中斷返回前,應該撤除該中斷請求,否則會引起另一次中斷。,定時器,0,或,1,溢出:,CPU,在響應中斷后,硬件清除了有關的中斷請求標志,TFO,或,TF1,,,即,中斷請求是自動撤除的,。,邊沿激活的外部中斷:,CPU,在響應中斷后,也是,用硬件自動清除,有關的中斷請求標志,IE0,或,IE1,。,串行口中斷:,CPU,響應中斷后,沒有用硬件清除,T1,、,R1,,,故這些中斷不能自動撤除,而,要靠軟件來清除相應的標志,。,任務三 單片機中斷程序設計,撤除方法較復雜。因為在電平觸發(fā)方式中,,CPU,響應中斷時不會自動清除,IEI,或,IE0,標志,所以在響應中斷后應立即撤除,INT0,或,INT1,引腳上的低電平。,在硬件上,,CPU,對,INT0,和,INT1,引腳的信號不能控制,所以這個問題要通過硬件,再配合軟件來解決。參見教材圖,5.10,電平激活的外部中斷源中斷標志的撤除,任務三 單片機中斷程序設計,外部中斷源的擴展,單片機僅有兩個外部中斷輸入端,.,可用兩種方法擴展,:,1.,定時器,T0,T1,。(,工作在計數方式下。),2.,中斷和查詢結合。,任務三 單片機中斷程序設計,在實際生活中,我們在交通路口看到的是定時控制的交通燈。這里將給出一個在定時交通燈控制的基礎上,增加允許急救車優(yōu)先通過的交通控制系統。,當有急救車到達時,路口的信號燈全紅以便讓急救車通過。急救車,任務三 單片機中斷程序設計,任務三 單片機中斷程序設計,任務三 單片機中斷程序設計,交通信號燈控制,定義中斷系統,A,線綠燈亮,,B,線紅燈亮,A,線黃燈亮,,B,線紅燈亮,延時,5,秒,延時,3,秒,A,線紅燈亮,,B,線綠燈亮,延時,5,秒,A,線紅燈亮,,B,線黃燈亮,延時,3,秒,主程序流程圖,中斷響應,A,線紅燈亮,,B,線紅燈亮,恢復原狀態(tài),延時,10,秒,返回,中斷服務程序流程圖,任務三 單片機中斷程序設計,ORG 0003H,AJMP INT0P,ORG 0030H,MAIN,:,MOV SP,,,#60H,SETB EA,SETB EX0,SETB IT0,LOOP,:,MOV R0,,,#0F3H,MOV P1,,,R0,MOV R7,,,#19H,任務三 單片機中斷程序設計,LOOP1,:,LCALL DELAY,DJNZ R7,,,LOOP1,MOV R0,,,#0F5H,MOV P1,,,R0,MOV R7,,,#05H,LOOP2,:,LCALL DELAY,DJNZ R7,,,LOOP2,MOV R0,,,#0DEH,MOV P1,,,R0,MOV R7,,,#19H,任務三 單片機中斷程序設計,LOOP3,:,LCALL DELAY,DJNZ R7,,,LOOP3,MOV R0,,,#0EEH,MOV P1,,,R0,MOV R7,,,#05H,LOOP4,:,LCALL DELAY,DJNZ R7,,,LOOP4,AJMP LOOP,任務三 單片機中斷程序設計,INT0P,:,MOV P1,,,#0F6H,MOV R7,,,#0A0H,DEL,:,ACALL DELAY,DJNZ R7,,,DEL,MOV P1,R0,RETI,謝謝!,西安航空職業(yè)技術學院,電氣自動化教研室 王曙霞,