技术交流 · 2009 年 5 月 6 日 4

模拟交通灯实验

;模拟交通灯实验,设定与P2口相连的8个LED为交通灯。
;P2.0、P2.1、P2.2分别为东西方向的红绿黄灯.
;P2.4、P2.5、P2.6分别为南北方向的红绿黄灯.
;初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,
;南北路口的红灯亮、东西方向通车,延时一段时间后,
;东西路口绿灯灭、黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,
;而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,
;南北路口绿灯灭、黄灯开始闪烁。
;闪烁若干次后,在切换到东西路口方向,重复上述过程。
;程序制作:付江云
;开发环境:keil+汇编
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV A,#0EEH
MOV P2,A
LCALL DELAYMS
BEGIN: MOV A,#0EDH
MOV P2,A
LCALL DELAYS
MOV R0,#0AH
BBB: DJNZ R0,SHAN1
AJMP AAA
SHAN1: MOV A,#0EBH
MOV P2,A
LCALL DELAYMS
MOV A,#0EFH
MOV P2,A
LCALL DELAYMS
SJMP BBB
AAA: MOV A,#0DEH
MOV P2,A
LCALL DELAYS
MOV R0,#0AH
CCC: DJNZ R0,SHAN2
AJMP BEGIN
SHAN2: MOV A,#0BEH
MOV P2,A
LCALL DELAYMS
MOV A,#0FEH
MOV P2,A
LCALL DELAYMS
SJMP CCC
DELAYMS:MOV R1,#0A0H
DDD: MOV R2,#0A0H
EEE: DJNZ R2,EEE
DJNZ R1,DDD
RET
DELAYS: MOV R1,#0FFH
FFF: MOV R2,#0FFH
GGG: DJNZ R2,GGG
DJNZ R1,FFF
RET
END