wl012.lst
来自「单片机开发资料 基于51单片机的单片机开发板 包括《实验例程」· LST 代码 · 共 308 行 · 第 1/2 页
LST
308 行
142 ; END OF timer0
143
144 ;===============================================================================
0076 145 UPDATE_DISBUF:
146 USING 1
147
0076 AF8D 148 MOV R7,TH1
0078 AE8B 149 MOV R6,TL1
007A 120000 F 150 LCALL BIN16BCD
151
007D 900000 F 152 MOV DPTR, #DIS_CODE
153
0080 ED 154 MOV A,R5
0081 540F 155 ANL A,#0FH
0083 93 156 MOVC A,@A+DPTR
0084 F500 F 157 MOV DIS_BUF+4, A
158
0086 EC 159 MOV A,R4
0087 03 160 RR A
0088 03 161 RR A
0089 03 162 RR A
008A 03 163 RR A
008B 540F 164 ANL A,#0FH
008D 93 165 MOVC A,@A+DPTR
008E F500 F 166 MOV DIS_BUF+3,A
167
0090 EC 168 MOV A,R4
0091 540F 169 ANL A,#0FH
0093 93 170 MOVC A,@A+DPTR
0094 F500 F 171 MOV DIS_BUF+2,A
172
0096 EB 173 MOV A,R3
0097 03 174 RR A
0098 03 175 RR A
0099 03 176 RR A
009A 03 177 RR A
009B 540F 178 ANL A,#0FH
009D 93 179 MOVC A,@A+DPTR
009E F500 F 180 MOV DIS_BUF+1,A
181
00A0 EB 182 MOV A,R3
00A1 540F 183 ANL A,#0FH
00A3 93 184 MOVC A,@A+DPTR
00A4 F500 F 185 MOV DIS_BUF,A
186
00A6 22 187 RET
188 ; END OF UPDATE_DISBUF
189
190
A51 MACRO ASSEMBLER WL012 11/03/2004 11:15:09 PAGE 4
191 ;===============================================================================
00A7 192 BIN16BCD:
193 ; 将16位二进制数转化为5位压缩的BCD码
194 ; 传入参数: R7:R6 --- 16位二进数; R7 --- MSB; R6 --- LSB
195 ; 返回参数: R5:R4:R3 --- 5位压缩的BCD码; R5 --- MSB; R3 --- LSB
196 ;
197
00A7 E4 198 CLR A
00A8 FB 199 MOV R3,A ;
00A9 FC 200 MOV R4,A
00AA FD 201 MOV R5,A
202
00AB 7810 203 MOV R0,#16 ; 共需左移16次
204
00AD 205 BIN16BCD_LP:
00AD EE 206 MOV A,R6 ; 将R6左移一位到R7
00AE 33 207 RLC A
00AF FE 208 MOV R6,A
00B0 EF 209 MOV A,R7 ; 将R6的高位移入到R7
00B1 33 210 RLC A ; 将R7的高位移出到C
00B2 FF 211 MOV R7,A
212
213 ;-------------------------------
00B3 EB 214 MOV A,R3 ; 将C移入到目标数(BCD)的最低位
00B4 3B 215 ADDC A,R3 ; 这里用ADDC进行移位,而没有使用RLC,
216 ; 是为下面能正确的使用十进制调整指令DA
00B5 D4 217 DA A ; 十进制调整
00B6 FB 218 MOV R3,A ; 存回
219
00B7 EC 220 MOV A,R4 ; 将R3的高位移入
00B8 3C 221 ADDC A,R4 ;
00B9 D4 222 DA A ; 十进制调整
00BA FC 223 MOV R4,A ; 存回
224
00BB ED 225 MOV A,R5 ; 将R4的高位移入
00BC 3D 226 ADDC A,R5
00BD D4 227 DA A ; 十进制调整
00BE FD 228 MOV R5,A ; 存回
229
00BF D8EC 230 DJNZ R0,BIN16BCD_LP
231
00C1 22 232 RET
233
00C2 234 DIS_CODE:
00C2 C0 235 DB 0C0H
00C3 F9 236 DB 0F9H
00C4 A4 237 DB 0A4H
00C5 B0 238 DB 0B0H
00C6 99 239 DB 099H
00C7 92 240 DB 092H
00C8 82 241 DB 082H
00C9 F8 242 DB 0F8H
00CA 80 243 DB 080H
00CB 90 244 DB 090H
00CC FF 245 DB 0FFH
246
247 END
A51 MACRO ASSEMBLER WL012 11/03/2004 11:15:09 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
BIN16BCD . . . . . C ADDR 00A7H R SEG=CODE_SEG
BIN16BCD_LP. . . . C ADDR 00ADH R SEG=CODE_SEG
CODE_SEG . . . . . C SEG 00CDH REL=UNIT
DATA_SEG . . . . . D SEG 000BH REL=UNIT
DIS_BUF. . . . . . D ADDR 0002H R SEG=DATA_SEG
DIS_CODE . . . . . C ADDR 00C2H R SEG=CODE_SEG
DIS_DIGIT. . . . . D ADDR 0000H R SEG=DATA_SEG
DIS_INDEX. . . . . D ADDR 0001H R SEG=DATA_SEG
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
END_TIMER0 . . . . C ADDR 006DH R SEG=CODE_SEG
IE . . . . . . . . D ADDR 00A8H A
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
PSW. . . . . . . . D ADDR 00D0H A
SP . . . . . . . . D ADDR 0081H A
STACK. . . . . . . I ADDR 0000H R SEG=STACK_SEG
STACK_SEG. . . . . I SEG 0014H REL=UNIT
TH0. . . . . . . . D ADDR 008CH A
TH1. . . . . . . . D ADDR 008DH A
TIMER0 . . . . . . C ADDR 003DH R SEG=CODE_SEG
TL0. . . . . . . . D ADDR 008AH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TMP. . . . . . . . D ADDR 000AH R SEG=DATA_SEG
TR0. . . . . . . . B ADDR 0088H.4 A
TR1. . . . . . . . B ADDR 0088H.6 A
UPDATE_DISBUF. . . C ADDR 0076H R SEG=CODE_SEG
WL012. . . . . . . N NUMB -----
REGISTER BANK(S) USED: 0 1
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?