📄 sz616a.lst
字号:
A51 MACRO ASSEMBLER SZ616A 06/16/2008 14:43:59 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN SZ616a.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SZ616a.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
0050 16 DISPBUF1 EQU 50H ;定时缓冲
17
0090 18 BEEP BIT p1.0
19
0030 20 MSCNT EQU 30H ;中断次数
21
0031 22 SECONDBUF EQU 31H
0032 23 MINUTEBUF EQU 32H
0033 24 HOURBUF EQU 33H
0034 25 MONTHBUF EQU 34H
0035 26 DAYBUF EQU 35H
0036 27 MINUTEBUF1 EQU 36H
0037 28 HOURBUF1 EQU 37H
29
0000 30 ORG 0000h
0000 2100 31 JMP START
000B 32 ORG 000Bh
000B 212C 33 JMP TIMER0
0100 34 ORG 0100H
35
36
0100 37 START:
0100 75815F 38 MOV SP,#5FH
0103 C295 39 CLR LED2DZ
0105 40 CLRDISPBUF: ; 清显示缓冲区
0105 7A0F 41 MOV R2,#0FH
0107 7821 42 MOV R0,#DISPBUF+1
0109 43 CLRDISPBUFLOOP:
0109 7600 44 MOV @R0,#0H
010B 08 45 INC R0
010C DAFB 46 DJNZ R2,CLRDISPBUFLOOP
47
010E 754000 48 MOV DISPFLAG,#0H;初始时显示"时,分"
49
0111 C2B0 50 CLR LS164_AB
0113 C2B1 51 CLR LS164_CLK
52
0115 758901 53 MOV TMOD,#01H ; 方式1
54
0118 758C1F 55 MOV TH0,#1FH ;初值
011B 758A00 56 MOV TL0,#00H
011E 753010 57 MOV MSCNT,#16
0121 D2AF 58 SETB EA
A51 MACRO ASSEMBLER SZ616A 06/16/2008 14:43:59 PAGE 2
0123 D2A9 59 SETB ET0
0125 D28C 60 SETB TR0
61
62
63
0127 64 LOOP: ; LCALL KEYINPUT
0127 120263 65 LCALL DISP
012A 2127 66 AJMP LOOP
012C 67 TIMER0:
012C C0D0 68 PUSH PSW
012E C0E0 69 PUSH ACC
0130 D2D3 70 SETB PSW.3 ; 去掉后闪烁明显
0132 758C1F 71 MOV TH0,#1FH
0135 758A00 72 MOV TL0,#00H
0138 E530 73 MOV A,MSCNT
013A 14 74 DEC A
013B F530 75 MOV MSCNT,A
013D 7031 76 JNZ RET1
77 ; 微调
013F C2AF 78 CLR EA
0141 758C1F 79 MOV TH0,#1FH
0144 758A00 80 MOV TL0,#00H
0147 D2AF 81 SETB EA
0149 75300F 82 MOV MSCNT,#15
83
84 ; 秒走
014C E531 85 MOV A, SECONDBUF
014E B40115 86 CJNE A, #1,SADD1
0151 753100 87 MOV SECONDBUF, #0
88 ; 分走
0154 E532 89 MOV A, MINUTEBUF
0156 B40111 90 CJNE A, #1,MADD1
0159 753200 91 MOV MINUTEBUF, #0
92 ; 小时走
015C E533 93 MOV A, HOURBUF
015E B4030D 94 CJNE A, #3,HADD1
0161 753300 95 MOV HOURBUF, #0
96
97 ; 定时
0164 2170 98 AJMP RET1
99
0166 100 SADD1: ; 秒加1
0166 0531 101 INC SECONDBUF
0168 2170 102 AJMP RET1
016A 103 MADD1: ; 分加1
016A 0532 104 INC MINUTEBUF
016C 2170 105 AJMP RET1
016E 106 HADD1: ; 小时加1
016E 0533 107 INC HOURBUF
108
0170 12019C 109 RET1: LCALL KEYINPUT
110
111 ; PUSH ACC
0173 853355 112 MOV 55H,HOURBUF
0176 635503 113 XRL 55H,#3
0179 A955 114 MOV R1,55H
017B B9000D 115 CJNE R1,#0,RET2
116
017E 853256 117 MOV 56H,MINUTEBUF
0181 635601 118 XRL 56H,#1
0184 AA56 119 MOV R2,56H
0186 BA0002 120 CJNE R2,#0,RET2
121
122 ; MOV A,HOURBUF
123 ; XRL A,HOURBUF1
124 ; JNZ RET2
A51 MACRO ASSEMBLER SZ616A 06/16/2008 14:43:59 PAGE 3
125 ; MOV A,MINUTEBUF
126 ; XRL A,MINUTEBUF1
127 ; JNZ RET2
0189 C290 128 CLR BEEP
129
130
018B 131 RET2:
132 ; POP ACC
018B D0E0 133 POP ACC
018D D0D0 134 POP PSW
135
018F 32 136 RETI
137
138 ; 74LS164芯片工作原理程序
0190 139 Send74LS164:
0190 7908 140 MOV R1,#8
0192 141 Send2LS164_Loop:
0192 33 142 RLC A
0193 92B0 143 MOV LS164_AB,C
0195 D2B1 144 SETB LS164_CLK
0197 C2B1 145 CLR LS164_CLK
0199 D9F7 146 DJNZ r1,Send2LS164_Loop
019B 22 147 RET
148
019C 149 KEYINPUT:
150
151
019C 20D541 152 JB F0,K1RET
153
019F 20B52E 154 K1: JB KEY1,K2
01A2 120442 155 LCALL DELAY10MS
01A5 20B528 156 JB KEY1,K2
01A8 120442 157 LCALL DELAY10MS
158
01AB 209004 159 JB BEEP,K1S
01AE D290 160 SETB BEEP
01B0 802E 161 JMP K1RET
01B2 162 K1S:
01B2 E540 163 MOV A,DISPFLAG
164
01B4 B40105 165 CJNE A,#1,CLRSECONDBUF
01B7 4162 166 AJMP KEYRET
167
01B9 B40203 168 CJNE A,#2,DISPFLAGADD
01BC 169 CLRSECONDBUF:
01BC 753100 170 MOV SECONDBUF,#0
171
01BF 172 DISPFLAGADD:
01BF 2403 173 ADD A,#3
01C1 F540 174 MOV DISPFLAG,A
01C3 D2D5 175 SETB F0
01C5 30B5FD 176 WAIT: JNB KEY1,WAIT
01C8 B41515 177 CJNE A,#15H,K1RET
01CB 754000 178 MOV DISPFLAG,#0
01CE C2D5 179 CLR F0
180
01D0 181 K2:
01D0 20B70D 182 JB KEY2,K1RET
01D3 120450 183 LCALL DELAY10US
01D6 20B707 184 JB KEY2,K1RET
01D9 120450 185 LCALL DELAY10US
01DC E540 186 MOV A,DISPFLAG
01DE 21E2 187 AJMP K2X
188
01E0 189 K1RET:
01E0 4162 190 JMP KEYRET
A51 MACRO ASSEMBLER SZ616A 06/16/2008 14:43:59 PAGE 4
191
192
01E2 B40006 193 K2X: CJNE A,#0,DISP1
01E5 2401 194 ADD A,#1
01E7 F540 195 MOV DISPFLAG,A
01E9 8077 196 JMP KEYRET
197
01EB B40106 198 DISP1: CJNE A,#1,DISP2
01EE 2401 199 ADD A,#1
01F0 F540 200 MOV DISPFLAG,A
01F2 806E 201 JMP KEYRET
202
01F4 B40206 203 DISP2: CJNE A,#2,MONADD1
01F7 7400 204 MOV A,#0
01F9 F540 205 MOV DISPFLAG,A
01FB 8065 206 JMP KEYRET
207
208
01FD 209 MONADD1: ; 月加1
01FD B4030E 210 CJNE A,#3,DAYADD1
0200 AD34 211 MOV R5, MONTHBUF
0202 BD0C05 212 CJNE R5,#12,MONADD
0205 753401 213 MOV MONTHBUF,#1
0208 4162 214 AJMP KEYRET
020A 215 MONADD:
020A 0534 216 INC MONTHBUF
020C 4162 217 AJMP KEYRET
218
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -