ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTT0
ORG 0013H
LJMP INTT1
ORG 001BH
LJMP TT1
ORG 0100H
TT1: MOV TH1,#0D8H ;定时器1,定时10us
MOV TL1,#0F0H
DJNZ R6,EXIT
MOV R6,#100 ;定时器定时100次
MOV R1,#0FFH
EXIT: RETI
INTT0:MOV P1,#0BEH ;外部中断0,
JB P3.4,$
RETI
INTT1:MOV P1,#0BBH ;外部中断1,
JB P3.4,$
RETI
ORG 1000H
MAIN: MOV R6,#100 ;主程序;
MOV R1,#00H
MOV TMOD,#10H ;初始化
MOV TH1,#0D8H
MOV TL1,#0F0H
MOV IE,#8DH
MOV 20H,#25
MOV 21H,#5
MOV 22H,#15
MOV 23H,#30
MOV 24H,#20
SETB TR1
ST1: MOV P1,#0BBH ;第一个状态,主干道亮绿灯、支干道亮红灯;
CJNE R1,#0FFH,TZ1
MOV R1,#00H
DEC 20H
DEC 23H
TZ1: MOV R2,20H
MOV R3,23H
LCALL DISP ;调用显示子程序。
MOV A,20H
CJNE A,#00H,ST1
MOV 20H,#25
ST2: MOV P1,#0BDH ;第二个状态,主干道亮黄灯、支干道亮红灯;
CJNE R1,#0FFH,TZ2
MOV R1,#00H
DEC 21H
DEC 23H
TZ2: MOV R2,21H
MOV R3,23H
LCALL DISP ;调用显示子程序。
MOV A,21H
CJNE A,#00H,ST2
MOV 21H,#05
MOV 23H,#30
ST3: MOV P1,#0DEH ;第三个状态,主干道亮红灯、支干道亮绿灯;
CJNE R1,#0FFH,TZ3
MOV R1,#00H
DEC 24H
DEC 22H
TZ3: MOV R2,24H
MOV R3,22H
LCALL DISP ;调用显示子程序。
MOV A,22H
CJNE A,#00H,ST3
MOV 22H,#15
ST4: MOV P1,#0EEH ;第四个状态,主干道亮红灯、支干道亮黄灯;
CJNE R1,#0FFH,TZ4
MOV R1,#00H
DEC 24H
DEC 21H
TZ4: MOV R2,24H
MOV R3,21H
LCALL DISP ;调用显示子程序。
MOV A,21H
CJNE A,#00H,ST4
MOV 21H,#05
MOV 24H,#20
LJMP ST1 ;跳转到第一个状态。
DISP: MOV A,R2 ;显示子程序。
MOV B,#10
DIV AB
MOV 60H,A
MOV 61H,B
MOV A,R3
MOV B,#10
DIV AB
MOV 62H,A
MOV 63H,B
MOV 40H,#04H
MOV R5,#0FEH
MOV R0,#60H
LLP: MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,R5
MOV P2,A
RL A
MOV R5,A
INC R0
LCALL DELAY1
DJNZ 40H,LLP
RET
DELAY1: ;延时子程序
MOV R4,#1
DL2: MOV R7,#1
DJNZ R7,$
DJNZ R4,DL2
RET
TABLE:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END