?? 外部中斷實驗(急救車與交通燈).txt
字號:
外部中斷實驗(急救車與交通燈)
1970-01-01 08:00:00 作者:本站 來源:轉載 瀏覽次數:166 文字大?。骸敬蟆俊局小俊拘 ?外部中斷實驗(急救車與交通燈)
一.實驗要求
在實驗四內容的基礎上增加允許急救車優先通過的要求。有急救車到達時,兩向交通信號為全紅,以便讓急救車通過。假定急救車通過路口時間為10秒,急救車通過后,交通燈恢復中斷前狀態。本實驗以按鍵為中斷申請,表示有急救車通過。
二.實驗目的
1.學習外部中斷技術的基本使用方法。
2.學習中斷處理程序的編程方法。
三.實驗電路及連線
四.實驗說明
中斷服務程序的關鍵是:1.保護進入中斷時的狀態,并在退出中斷之前恢復進入時的狀態。2.必須在中斷程序中設定是否允許中斷重入,即設置EX0位。
本例中使用了INT0中斷,一般中斷程序進入時應保護PSW,ACC以及中斷程序使用但非其專用的寄存器。本例的INT0程序保護了PSW,ACC,2等三個寄存器并且在退出前恢復了這三個寄存器。另外中斷程序中涉及到關鍵數據的設置時應關中斷,即設置時不允許重入。本例中沒有涉及這種情況。
實驗開始時K8應在H(高電平)端,要產生中斷時先撥向L(低電平)端再撥回H端。
五.實驗程序框圖
源代碼:
ORG 0000H
LJMP START
ORG 0003H ;INT 0 中斷入口地址
LJMP INT0
ORG 0040H
START:
MOV SP,#60H
SETB EX0 ;INT 0 中斷有效
SETB IT0
SETB EA
LCALL STATUS0 ;初始狀態(都是紅燈)
CIRCLE: LCALL STATUS1 ;南北綠燈,東西紅燈
LCALL STATUS2 ;南北綠燈閃轉黃燈,東西紅燈
LCALL STATUS3 ;南北紅燈,東西綠燈
LCALL STATUS4 ;南北紅燈,東西綠燈閃轉黃燈
LJMP CIRCLE
INT0:
PUSH PSW ;保護現場
PUSH 2
PUSH ACC
MOV DPTR,#8300H
MOV A,#0FH ;南北,東西都亮紅燈
MOVX @DPTR,A
MOV R2,#100 ;延時10秒
LCALL DELAY
POP ACC ;恢復現場
MOVX @DPTR,A
POP 2
POP PSW
RETI
STATUS0: ;南北紅燈,東西紅燈
MOV DPTR,#8300H
MOV A,#0FH
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
RET
STATUS1: ;南北綠燈,東西紅燈
MOV DPTR,#8300H
MOV A,#5AH ;南北綠燈,東西紅燈
MOVX @DPTR,A
MOV R2,#50 ;延時5秒
LCALL DELAY
RET
STATUS2: ;南北綠燈閃轉黃燈,東西紅燈
MOV DPTR,#8300H
MOV R3,#03H ;綠燈閃3次
FLASH: MOV A,#5FH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#5AH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH
MOV A,#0AH ;南北黃燈,東西紅燈
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
RET
STATUS3: ;南北紅燈,東西綠燈
MOV DPTR,#8300H
MOV A,#0A5H
MOVX @DPTR,A
MOV R2,#50 ;延時5秒
LCALL DELAY
RET
STATUS4: ;南北紅燈,東西綠燈閃轉黃燈
MOV DPTR,#8300H
MOV R3,#03H ;綠燈閃3次
FLASH1: MOV A,#0AFH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#0A5H
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH1
MOV A,#05H ;南北紅燈,東西黃燈
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
NOP
RET
DELAY: ;延時子程序
PUSH 2
PUSH 1
PUSH 0
DELAY1: MOV 1,#00H
DELAY2: MOV 0,#0B2H
DJNZ 0,$
DJNZ 1,DELAY2 ;延時 100 mS
DJNZ 2,DELAY1
POP 0
POP 1
POP 2
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -