1. 因為本設計是交通燈控制設計,所以要先了解實際交通燈的變化規律。假設壹個十字路口為東西南北走向。初始狀態0為東西紅燈,南北紅燈,然後轉狀態l南北綠燈通車,東西紅燈;過壹段時間轉狀態2,南北綠燈閃幾次轉亮黃燈,延時3秒,東西仍然紅燈;再轉狀態3,東西綠燈通車,南北紅燈;過壹段時間轉狀態4,東西綠燈閃幾次轉亮黃燈,延時3秒,南北仍然紅燈;然後在循環至狀態1,依次類推。
2. 中斷服務程序的關鍵是:(1)保護進入中斷時的狀態,並在退出中斷之前恢復進入時的狀態。(2)必須在中斷程序中設定是否允許中斷重入。
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP INT
ORG 0040H
MAIN:MOV SP,#60H
SETB EA
SETB EX0
SETB PX0
SETB IT0
MOV P1,#09H
ACALL DELAY1S
ABC:MOV R0,#3
MOV R1,#3
MOV P1,#0CH
ACALL DELAY1S
DEF:
CLR P1.2
ACALL DELAY2S
SETB P1.2
ACALL DELAY2S
DJNZ R0,DEF
MOV P1,#0AH
ACALL DELAY1S
MOV P1,#11H
ACALL DELAY1S
MOV P1,#21H
ACALL DELAY1S
GHI:CLR P1.5
ACALL DELAY2S
SETB P1.5
ACALL DELAY2S
DJNZ R1,GHI
MOV P1,#11H
AJMP ABC
INT: CLR EA
PUSH PSW
PUSH ACC
PUSH 05H
PUSH 06H
PUSH 07H
PUSH P1
SETB EA
MOV P1,#09H
ACALL DELAY1S
CLR EA
POP P1
POP 07H
POP 06H
POP 05H
POP ACC
POP PSW
SETB EA
RETI
DELAY1S:MOV R7,#5
DEL:MOV R6,#255
DE:MOV R5,#255
DJNZ R5,$;FOSC=6MHZ
DJNZ R6,DE
DJNZ R7,DEL
RET
DELAY2S:MOV R4,#250
DELL:MOV R3,#250
DJNZ R3,$;FOSC=6MHZ
DJNZ R4,DELL
RET
END