📄 trafic lamp.lst
字号:
A51 MACRO ASSEMBLER TRAFIC_LAMP 08/25/2006 22:09:50 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Trafic Lamp.OBJ
ASSEMBLER INVOKED BY: E:\Program Files\Keil\C51\BIN\A51.EXE Trafic Lamp.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0030 1 SECOND1 EQU 30H ;东西路口计时寄存器
0031 2 SECOND2 EQU 31H ;南北路口计时寄存器
0040 3 DBUF EQU 40H ;显示码缓冲区1
0044 4 TEMP EQU 44H ;显示码缓冲区2
00A1 5 LED_G1 BIT P2.1 ;东西路口绿灯
00A2 6 LED_Y1 BIT P2.2 ;东西路口黄灯
00A3 7 LED_R1 BIT P2.3 ;东西路口红灯
00A4 8 LED_G2 BIT P2.4 ;南北路口绿灯
00A5 9 LED_Y2 BIT P2.5 ;南北路口黄灯
00A6 10 LED_R2 BIT P2.6 ;南北路口红灯
0000 11 ORG 0000H
0000 020100 12 LJMP START
0100 13 ORG 0100H
0100 758901 14 START: MOV TMOD,#01H ;置T0为工作方式1
0103 758C3C 15 MOV TH0,#3CH ;置T0定时初值50ms
0106 758AB0 16 MOV TL0,#0B0H
0109 C28D 17 CLR TF0
010B D28C 18 SETB TR0 ;启动T0
010D E4 19 CLR A
010E F590 20 MOV P1,A ;关闭不相关的LED
21 ;***************************************************
0110 7A14 22 LOOP: MOV R2,#20 ;置1s计数初值,50ms*20=1s
0112 7B14 23 MOV R3,#20 ;红灯亮20s
0114 753019 24 MOV SECOND1,#25 ;东西路口计时显示初值25s
0117 753119 25 MOV SECOND2,#25 ;南北路口计时显示初值25s
011A 12025D 26 LCALL DISPLAY
011D 120213 27 LCALL STATE1 ;调用状态1
0120 308DFD 28 WAIT1: JNB TF0,WAIT1 ;查询50ms到否
0123 C28D 29 CLR TF0
0125 758C3C 30 MOV TH0,#3CH ;恢复T0定时初值50ms
0128 758AB0 31 MOV TL0,#0B0H
012B DAF3 32 DJNZ R2,WAIT1 ;判断1s到否?未到继续状态1
012D 7A14 33 MOV R2,#20 ;置50ms计数初值
012F 1530 34 DEC SECOND1 ;东西路口显示时间减1s
0131 1531 35 DEC SECOND2 ;南北路口显示时间减1s
0133 12025D 36 LCALL DISPLAY
0136 DBE8 37 DJNZ R3,WAIT1 ;状态1维持20s
38 ;*******************************************
0138 7A05 39 MOV R2,#5 ;置50ms计数初值 5*4=20
013A 7B03 40 MOV R3,#3 ;绿灯闪3s
013C 7C04 41 MOV R4,#4 ;闪烁间隔200ms
013E 753005 42 MOV SECOND1,#5 ;东西路口计时显示初值5s
0141 753105 43 MOV SECOND2,#5 ;南北路口计时显示初值5s
0144 12025D 44 LCALL DISPLAY
0147 120220 45 WAIT2: LCALL STATE2 ;调用状态2
014A 308DFA 46 JNB TF0,WAIT2 ;查询50ms到否
014D C28D 47 CLR TF0
014F 758C3C 48 MOV TH0,#3CH ;恢复T0定时初值50ms
0152 758AB0 49 MOV TL0,#0B0H
0155 DCF0 50 DJNZ R4,WAIT2 ;判断200ms到否?未到继续状态2
0157 B2A1 51 CPL LED_G1 ;东西绿灯闪
0159 7C04 52 MOV R4,#4 ;闪烁间隔200ms
015B DAEA 53 DJNZ R2,WAIT2 ;判1s到否?未到继续状态2
015D 7A05 54 MOV R2,#5 ;置50ms计数初值
015F 1530 55 DEC SECOND1 ;东西路口显示时间减1s
0161 1531 56 DEC SECOND2 ;南北路口显示时间减1s
0163 12025D 57 LCALL DISPLAY
0166 DBDF 58 DJNZ R3,WAIT2 ;状态2维持3s
A51 MACRO ASSEMBLER TRAFIC_LAMP 08/25/2006 22:09:50 PAGE 2
59 ;****************************************
0168 7A14 60 MOV R2,#20 ;置50ms计数初值
016A 7B02 61 MOV R3,#2 ;黄灯闪2s
016C 753002 62 MOV SECOND1,#2 ;东西路口计时显示初值2s
016F 753102 63 MOV SECOND2,#2 ;南北路口计时显示初值2s
0172 12025D 64 LCALL DISPLAY
0175 12022B 65 WAIT3: LCALL STATE3 ;调用状态3
0178 308DFA 66 JNB TF0,WAIT3 ;查询100ms到否
017B C28D 67 CLR TF0
017D 758C3C 68 MOV TH0,#3CH ;恢复T0定时初值100ms
0180 758AB0 69 MOV TL0,#0B0H
0183 DAF0 70 DJNZ R2,WAIT3 ;判断1s到否?未到继续状态3
0185 7A14 71 MOV R2,#20 ;置100ms计数初值
0187 1530 72 DEC SECOND1 ;东西路口显示时间减1s
0189 1531 73 DEC SECOND2 ;南北路口显示时间减1s
018B 12025D 74 LCALL DISPLAY
018E DBE5 75 DJNZ R3,WAIT3 ;状态3维持2s
76 ;*******************************************
0190 7A14 77 MOV R2,#20 ;置50ms计数初值
0192 7B14 78 MOV R3,#20 ;红灯闪20s
0194 753019 79 MOV SECOND1,#25 ;东西路口计时显示初值25s
0197 753119 80 MOV SECOND2,#25 ;南北路口计时显示初值25s
019A 12025D 81 LCALL DISPLAY
019D 120238 82 WAIT4: LCALL STATE4 ;调用状态4
01A0 308DFA 83 JNB TF0,WAIT4 ;查询100ms到否
01A3 C28D 84 CLR TF0
01A5 758C3C 85 MOV TH0,#3CH ;恢复T0定时初值100ms
01A8 758AB0 86 MOV TL0,#0B0H
01AB DAF0 87 DJNZ R2,WAIT4 ;判断1s到否?未到继续状态4
01AD 7A14 88 MOV R2,#20 ;置100ms计数初值
01AF 1530 89 DEC SECOND1 ;东西路口显示时间减1s
01B1 1531 90 DEC SECOND2 ;南北路口显示时间减1s
01B3 12025D 91 LCALL DISPLAY
01B6 DBE5 92 DJNZ R3,WAIT4 ;状态4维持20s
93 ;*******************************************
01B8 7A05 94 MOV R2,#5 ;置50ms计数初值
01BA 7C04 95 MOV R4,#4 ;红灯闪20ms
01BC 7B03 96 MOV R3,#3 ;绿灯闪3s
01BE 753005 97 MOV SECOND1,#5 ;东西路口计时显示初值5s
01C1 753105 98 MOV SECOND2,#5 ;南北路口计时显示初值5s
01C4 12025D 99 LCALL DISPLAY
01C7 120245 100 WAIT5: LCALL STATE5 ;调用状态5
01CA 308DFA 101 JNB TF0,WAIT5 ;查询100ms到否
01CD C28D 102 CLR TF0
01CF 758C3C 103 MOV TH0,#3CH ;恢复T0定时初值100ms
01D2 758AB0 104 MOV TL0,#0B0H
01D5 DCF0 105 DJNZ R4,WAIT5 ;判断200ms到否?未到继续状态5
01D7 B2A4 106 CPL LED_G2 ;南北绿灯闪
01D9 7C04 107 MOV R4,#4 ;闪烁200ms
01DB DAEA 108 DJNZ R2,WAIT5 ;判断1s到否?未到继续状态5
01DD 7A05 109 MOV R2,#5 ;置100ms计数初值
01DF 1530 110 DEC SECOND1 ;东西路口显示时间减1s
01E1 1531 111 DEC SECOND2 ;南北路口显示时间减1s
01E3 12025D 112 LCALL DISPLAY
01E6 DBDF 113 DJNZ R3,WAIT5 ;状态5维持3s
114 ;****************************************
01E8 7A14 115 MOV R2,#20 ;置50ms计数初值
01EA 7B02 116 MOV R3,#2 ;红灯闪2s
01EC 753002 117 MOV SECOND1,#2 ;东西路口计时显示初值2s
01EF 753102 118 MOV SECOND2,#2 ;南北路口计时显示初值2s
01F2 12025D 119 LCALL DISPLAY
01F5 120250 120 WAIT6: LCALL STATE6 ;调用状态6
01F8 308DFA 121 JNB TF0,WAIT6 ;查询100ms到否
01FB C28D 122 CLR TF0
01FD 758C3C 123 MOV TH0,#3CH ;恢复T0定时初值100ms
0200 758AB0 124 MOV TL0,#0B0H
A51 MACRO ASSEMBLER TRAFIC_LAMP 08/25/2006 22:09:50 PAGE 3
0203 DAF0 125 DJNZ R2,WAIT6 ;判断1s到否?未到继续状态6
0205 7A14 126 MOV R2,#20 ;置100ms计数初值
0207 1530 127 DEC SECOND1 ;东西路口显示时间减1s
0209 1531 128 DEC SECOND2 ;南北路口显示时间减1s
020B 12025D 129 LCALL DISPLAY
020E DBE5 130 DJNZ R3,WAIT6 ;状态6维持2s
0210 020110 131 LJMP LOOP ;大循环
132 ;**********************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -