附錄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
|