📄 tracffic.asm
字号:
;8255控制交通红绿灯
;PA5--L1(红)、PA4--L2(黄)、PA3--L3(绿) 南北
;PA2--L5(红)、PA1--L6(黄)、PA0--L7(绿) 东西
;ST0:初始状态全为红。ST1:南北绿灯,东西红灯。ST2:南北黄灯闪烁,东西红灯亮。
;ST3:南北红灯亮,东西绿灯亮。ST4:南北红灯,东西黄灯闪烁。
A8255 XDATA 8000H
B8255 XDATA 8001H
C8255 XDATA 8002H
D8255 XDATA 8003H
ORG 0000H
AJMP TRAFFIC
;*****************************************************************************
; /*主程序*/
;*****************************************************************************
ORG 0030H
TRAFFIC: MOV DPTR,#D8255 ;状态口
MOV A,#80H ;方式 0 输出
MOVX @DPTR,A
MOV DPTR,#A8255 ;PA口地址
CALL ST0
TRAFFIC1: CALL ST1
CALL ST2
CALL ST3
CALL ST4
AJMP TRAFFIC1
;*****************************************************************************
; /*初始状态全为红灯*/
;*****************************************************************************
ST0: MOV A,#1BH
MOVX @DPTR,A
CALL DELAY
RET
;*****************************************************************************
; /*南北为绿灯,东西为红灯子程序*/
;*****************************************************************************
ST1: MOV A,#33H
MOVX @DPTR,A
CALL DELAY_3S
CALL DELAY_3S
CALL DELAY_3S
RET
;*****************************************************************************
; /*南北红灯闪烁,东西为红灯子程序*/
;*****************************************************************************
ST2: MOV R0,#5
ST20: MOV A,#2BH
MOVX @DPTR,A
CALL DELAY
MOV A,#3BH
MOVX @DPTR,A
CALL DELAY
DJNZ R0,ST20
RET
;*****************************************************************************
; /*南北为红灯,东西为绿灯子程序*/
;*****************************************************************************
ST3: MOV A,#1EH
MOVX @DPTR,A
CALL DELAY_3S
CALL DELAY_3S
CALL DELAY_3S
RET
;*****************************************************************************
; /*南北为红灯,东西黄灯闪烁子程序*/
;*****************************************************************************
ST4: MOV R0,#5
ST40: MOV A,#1DH
MOVX @DPTR,A
CALL DELAY
MOV A,#1FH
MOVX @DPTR,A
CALL DELAY
DJNZ R0,ST40
RET
;*****************************************************************************
; /*延时子程序*/
;*****************************************************************************
DELAY_3S: MOV R5,#10 ;延时约3秒
DELAY_3S0: MOV R6,#225
DELAY_3S1: MOV R7,#225
DELAY_3S2: NOP
NOP
DJNZ R7,DELAY_3S2
DJNZ R6,DELAY_3S1
DJNZ R5,DELAY_3S0
RET
DELAY: MOV R5,#10
DELAY1: MOV R6,#50
DELAY2: MOV R7,#250
DJNZ R7,$
DJNZ R6,DELAY2
DJNZ R5,DELAY1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -