📄 sz613.lst
字号:
A51 MACRO ASSEMBLER SZ613 06/16/2008 10:39:23 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN SZ613.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SZ613.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
0093 2 LED1 BIT p1.3 ;4位数码管选通引脚
0094 3 LED2 BIT p1.4
0096 4 LED3 BIT p1.6
0097 5 LED4 BIT p1.7
0095 6 LED2DZ BIT P1.5 ;小数点
7
00B0 8 LS164_AB BIT p3.0 ;74LS164数据线
00B1 9 LS164_CLK BIT p3.1 ;74LS164时钟线
10
00B5 11 KEY1 BIT p3.5 ;按键1
00B7 12 KEY2 BIT p3.7 ;按键2
0040 13 DISPFLAG EQU 40H ;显示标识
14
0020 15 DISPBUF EQU 20H
16
0090 17 BEEP BIT p1.0
18
0030 19 MSCNT EQU 30H ;中断次数
20
0031 21 SECONDBUF EQU 31H
0032 22 MINUTEBUF EQU 32H
0033 23 HOURBUF EQU 33H
0034 24 MONTHBUF EQU 34H
0035 25 DAYBUF EQU 35H
26
0000 27 ORG 0000h
0000 2100 28 JMP START
000B 29 ORG 000Bh
000B 212C 30 JMP TIMER0
0100 31 ORG 0100H
32
33
0100 34 START:
0100 758150 35 MOV SP,#50H
0103 C295 36 CLR LED2DZ
0105 37 CLRDISPBUF: ; 清显示缓冲区
0105 7A0F 38 MOV R2,#0FH
0107 7821 39 MOV R0,#DISPBUF+1
0109 40 CLRDISPBUFLOOP:
0109 7600 41 MOV @R0,#0H
010B 08 42 INC R0
010C DAFB 43 DJNZ R2,CLRDISPBUFLOOP
44
010E 754000 45 MOV DISPFLAG,#0;初始时显示"时,分"
46
0111 C2B0 47 CLR LS164_AB
0113 C2B1 48 CLR LS164_CLK
49
0115 758901 50 MOV TMOD,#01H ; 方式1
51
0118 758C00 52 MOV TH0,#0H ;初值
011B 758A00 53 MOV TL0,#0H
54
011E 753015 55 MOV MSCNT,#15H
0121 D2AF 56 SETB EA
0123 D2A9 57 SETB ET0
0125 D28C 58 SETB TR0
A51 MACRO ASSEMBLER SZ613 06/16/2008 10:39:23 PAGE 2
59
0127 60 LOOP:
0127 120210 61 LCALL DISP
012A 2127 62 AJMP LOOP
012C 63 TIMER0:
012C C0D0 64 PUSH PSW
012E C0E0 65 PUSH ACC
0130 D2D3 66 SETB PSW.3
0132 758C00 67 MOV TH0,#0H
0135 758A00 68 MOV TL0,#0H
0138 E530 69 MOV A,MSCNT
013A 14 70 DEC A
013B F530 71 MOV MSCNT,A
013D 7031 72 JNZ RET1
73 ; 微调
013F C2AF 74 CLR EA
0141 758C0B 75 MOV TH0,#0BH
0144 758ADC 76 MOV TL0,#0DCH
0147 D2AF 77 SETB EA
0149 75300E 78 MOV MSCNT,#14
79
80 ; 秒走
014C E531 81 MOV A, SECONDBUF
014E B43B15 82 CJNE A, #59,SADD1
0151 753100 83 MOV SECONDBUF, #0
84 ; 分走
0154 E532 85 MOV A, MINUTEBUF
0156 B43B11 86 CJNE A, #59,MADD1
0159 753200 87 MOV MINUTEBUF, #0
88 ; 小时走
015C E533 89 MOV A, HOURBUF
015E B4170D 90 CJNE A, #23,HADD1
0161 753300 91 MOV HOURBUF, #0
92
93 ; MOV A, DAYBUF
94 ; CJNE A, #31,HADD1
95 ; MOV DAYBUF, #0
96
0164 2170 97 AJMP RET1
0166 98 SADD1: ; 秒加1
0166 0531 99 INC SECONDBUF
0168 2170 100 AJMP RET1
016A 101 MADD1: ; 分加1
016A 0532 102 INC MINUTEBUF
016C 2170 103 AJMP RET1
016E 104 HADD1: ; 小时加1
016E 0533 105 INC HOURBUF
106
0170 120184 107 RET1: LCALL KEYINPUT
0173 D0E0 108 POP ACC
0175 D0D0 109 POP PSW
0177 32 110 RETI
111
112 ; 74LS164芯片工作原理程序
0178 113 Send74LS164:
0178 7908 114 MOV R1,#8
017A 115 Send2LS164_Loop:
017A 33 116 RLC A
017B 92B0 117 MOV LS164_AB,C
017D D2B1 118 SETB LS164_CLK
017F C2B1 119 CLR LS164_CLK
0181 D9F7 120 DJNZ r1,Send2LS164_Loop
0183 22 121 RET
122
0184 123 KEYINPUT:
124
A51 MACRO ASSEMBLER SZ613 06/16/2008 10:39:23 PAGE 3
0184 20D52A 125 JB F0,K1RET
126
0187 20B529 127 K1: JB KEY1,K2
018A 12039B 128 LCALL DELAY10MS
018D 20B523 129 JB KEY1,K2
0190 12039B 130 LCALL DELAY10MS
0193 E540 131 MOV A,DISPFLAG
132
0195 B40105 133 CJNE A,#1,CLRSECONDBUF
0198 410F 134 AJMP KEYRET
135
019A B40203 136 CJNE A,#2,DISPFLAGADD
019D 137 CLRSECONDBUF:
019D 753100 138 MOV SECONDBUF,#0
139
01A0 140 DISPFLAGADD:
01A0 2403 141 ADD A,#3
142
01A2 F540 143 MOV DISPFLAG,A
01A4 D2D5 144 SETB F0
01A6 30B5FD 145 WAIT: JNB KEY1,WAIT
01A9 B40F63 146 CJNE A,#0FH,KEYRET
01AC 754000 147 MOV DISPFLAG,#0
01AF C2D5 148 CLR F0
01B1 149 K1RET:
01B1 805C 150 JMP KEYRET
151
152
153
154
01B3 155 K2:
01B3 20B759 156 JB KEY2,KEYRET
01B6 1203A9 157 LCALL DELAY10US
01B9 20B753 158 JB KEY2,KEYRET
01BC 1203A9 159 LCALL DELAY10US
01BF E540 160 MOV A,DISPFLAG
161
01C1 162 MONADD1: ; 月加1
01C1 B4030E 163 CJNE A,#3,DAYADD1
01C4 AD34 164 MOV R5, MONTHBUF
01C6 BD0C05 165 CJNE R5,#12,MONADD
01C9 753401 166 MOV MONTHBUF,#1
01CC 410F 167 AJMP KEYRET
01CE 168 MONADD:
01CE 0534 169 INC MONTHBUF
01D0 410F 170 AJMP KEYRET
171
01D2 172 DAYADD1: ; 日加1
01D2 B4060E 173 CJNE A,#6,HOURADD1
01D5 AD35 174 MOV R5,DAYBUF
01D7 BD1F05 175 CJNE R5,#31,DAYADD
01DA 753501 176 MOV DAYBUF,#1
01DD 410F 177 AJMP KEYRET
01DF 178 DAYADD:
01DF 0535 179 INC DAYBUF
01E1 410F 180 AJMP KEYRET
181
01E3 182 HOURADD1: ; 小时加1
01E3 B4090E 183 CJNE A,#9,MINADD1
01E6 AD33 184 MOV R5,HOURBUF
01E8 BD1705 185 CJNE R5,#23,HOURADD
01EB 753300 186 MOV HOURBUF,#0
01EE 410F 187 AJMP KEYRET
01F0 188 HOURADD:
01F0 0533 189 INC HOURBUF
01F2 410F 190 AJMP KEYRET
A51 MACRO ASSEMBLER SZ613 06/16/2008 10:39:23 PAGE 4
191
01F4 192 MINADD1: ; 分钟加1
01F4 B40C0E 193 CJNE A,#0CH,K2X
01F7 AD32 194 MOV R5,MINUTEBUF
01F9 BD3B05 195 CJNE R5,#59,MINADD
01FC 753200 196 MOV MINUTEBUF,#0
01FF 410F 197 AJMP KEYRET
0201 198 MINADD:
0201 0532 199 INC MINUTEBUF
0203 410F 200 AJMP KEYRET
201
0205 202 K2X: ; 显示日期和秒
0205 2401 203 ADD A,#1
0207 B40305 204 CJNE A,#3,KEYRET
020A 754000 205 MOV DISPFLAG,#0
020D F540 206 MOV DISPFLAG,A
207
020F 208 KEYRET:
209
020F 22 210 RET
211
212 ;显示程序
0210 213 DISP:
0210 7940 214 MOV R1,#DISPFLAG
0212 120333 215 LCALL UPDATEDISPBUF
216 ;初始显示 "时间"
0215 B7003A 217 KF0: CJNE @R1,#0,KF1
218
0218 7821 219 MOV R0,#DISPBUF+1
021A 12038F 220 LCALL GET_LED234
021D 120178 221 LCALL Send74LS164
0220 120386 222 LCALL SELECT_LED4
0223 12039B 223 LCALL DELAY10MS
224
0226 7822 225 MOV R0,#DISPBUF+2
0228 12038F 226 LCALL GET_LED234
022B 120178 227 LCALL Send74LS164
022E 12037D 228 LCALL SELECT_LED3
0231 12039B 229 LCALL DELAY10MS
230
0234 7823 231 MOV R0,#DISPBUF+3
0236 12038F 232 LCALL GET_LED234
0239 120178 233 LCALL Send74LS164
023C 120374 234 LCALL SELECT_LED2
023F 12039B 235 LCALL DELAY10MS
236
0242 7824 237 MOV R0,#DISPBUF+4
0244 120395 238 LCALL GET_LED1
0247 120178 239 LCALL Send74LS164
024A 12036B 240 LCALL SELECT_LED1
024D 12039B 241 LCALL DELAY10MS
0250 6132 242 AJMP KFRET
243 ;显示 "日期"
0252 B7013A 244 KF1: CJNE @R1,#1,KF2
245
0255 7825 246 MOV R0,#DISPBUF+5
0257 12038F 247 LCALL GET_LED234
025A 120178 248 LCALL Send74LS164
025D 120386 249 LCALL SELECT_LED4
0260 12039B 250 LCALL DELAY10MS
251
0263 7826 252 MOV R0,#DISPBUF+6
0265 12038F 253 LCALL GET_LED234
0268 120178 254 LCALL Send74LS164
026B 12037D 255 LCALL SELECT_LED3
026E 12039B 256 LCALL DELAY10MS
A51 MACRO ASSEMBLER SZ613 06/16/2008 10:39:23 PAGE 5
257
0271 7827 258 MOV R0,#DISPBUF+7
0273 12038F 259 LCALL GET_LED234
0276 120178 260 LCALL Send74LS164
0279 120374 261 LCALL SELECT_LED2
027C 12039B 262 LCALL DELAY10MS
263
027F 7828 264 MOV R0,#DISPBUF+8
0281 120395 265 LCALL GET_LED1
0284 120178 266 LCALL Send74LS164
0287 12036B 267 LCALL SELECT_LED1
028A 12039B 268 LCALL DELAY10MS
028D 6132 269 AJMP KFRET
270 ;显示 "秒"
028F B7021E 271 KF2: CJNE @R1,#2,KF3
272
0292 7829 273 MOV R0,#DISPBUF+9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -