附录1:程序清单
ORG OOOOH
LJMP MAIN
ORG 0003H
LJMP INTTO
ORG 0013H
LJMP INTT1
ORG OO1BH
LJMP TT1
ORG O1OOH
TT1: MOV TH1,#0D8H 定时器1,定时10us
MOV TL1,#0F0H
DJNZ R6,EXIT
MOV R6,#100 定时器定时100次
MOV R1,#0FFH
EXIT: REIT
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,#0EBH 第一个状态,东西主干道亮绿灯、支干道亮红灯;
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,#OOH,ST1
MOV 20H,#25
ST2: MOV P1,#0EDH 第二个状态,主干道亮黄灯、支干道亮红灯
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,#0BEH 第三个状态,主干道亮红灯、支干道亮绿灯
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,#0DEH 第四个状态,主干道亮红灯、支干道亮黄灯
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
MOV A,@A+DPTR
MOV P0,A
MOV A,R5
MOV P2,A
LCALL DELAY1
MOV P2,#0FFH 注:这里是程序修改的地方,P2口控制显示器令显示器熄灭,以免产生残影
RL A
MOV R5,A
INC R0
DJNZ 40H,LLP
RET
DELAY1:MOV R4,#12 延时子程序
DL2: MOV R7,#12
DJNZ R7,$
DJNZ R4,DL2
RET
TABLE: DB 3FH,24H,5DH,75H,66H
DB 73H,7BH,25H,7FH,77H
END
|