📄 chao.lst
字号:
0118 35F0 172 ADDC A,B
011A FA 173 MOV R2,A
011B 22 174 RET
175
176
177 ;DIVD 功能:双字节二进制无符号数除法
178
179 ;入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
180 ;出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
181 ;影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节
011C C3 182 DIVD: CLR C; ;比较被除数和除数
011D EB 183 MOV A,R3
011E 9F 184 SUBB A,R7
011F EA 185 MOV A,R2
0120 9E 186 SUBB A,R6
0121 4003 187 JC DVD1
0123 D2D2 188 SETB OV; ;溢出
0125 22 189 RET
0126 75F010 190 DVD1: MOV B,#10H; ;计算双字节商
A51 MACRO ASSEMBLER CHAO 02/18/2008 17:00:17 PAGE 4
0129 C3 191 DVD2: CLR C; ;部分商和余数同时左移一位
012A ED 192 MOV A,R5
012B 33 193 RLC A
012C FD 194 MOV R5,A
012D EC 195 MOV A,R4
012E 33 196 RLC A
012F FC 197 MOV R4,A
0130 EB 198 MOV A,R3
0131 33 199 RLC A
0132 FB 200 MOV R3,A
0133 CA 201 XCH A,R2
0134 33 202 RLC A
0135 CA 203 XCH A,R2
0136 92D5 204 MOV F0,C; ;保存溢出位
0138 C3 205 CLR C
0139 9F 206 SUBB A,R7; ;计算(R2R3-R6R7)
013A F9 207 MOV R1,A
013B EA 208 MOV A,R2
013C 9E 209 SUBB A,R6
013D B0D5 210 ANL C,/F0; ;结果判断
013F 4004 211 JC DVD3
0141 FA 212 MOV R2,A; ;够减,存放新的余数
0142 E9 213 MOV A,R1
0143 FB 214 MOV R3,A
0144 0D 215 INC R5; ;商的低位置一
0145 D5F0E1 216 DVD3: DJNZ B,DVD2; ;计算完十六位商(R4R5)
0148 EC 217 MOV A,R4; ;将商移到R2R3中
0149 FA 218 MOV R2,A
014A ED 219 MOV A,R5
014B FB 220 MOV R3,A
014C C2D2 221 CLR OV; ;设立成功标志
014E 22 222 RET
223
224 ;HB2 功能:双字节十六进制整数转换成双字节BCD码整数
225 ;入口条件:待转换的双字节十六进制整数在R6、R7中。
226 ;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
227 ;影响资源:PSW、A、R2~R7 堆栈需求: 2字节
014F E4 228 HB2: CLR A; ;BCD码初始化
0150 FB 229 MOV R3,A
0151 FC 230 MOV R4,A
0152 FD 231 MOV R5,A
0153 7A10 232 MOV R2,#10H; ;转换双字节十六进制整数
0155 EF 233 HB3: MOV A,R7; ;从高端移出待转换数的一位到CY中
0156 33 234 RLC A
0157 FF 235 MOV R7,A
0158 EE 236 MOV A,R6
0159 33 237 RLC A
015A FE 238 MOV R6,A
015B ED 239 MOV A,R5; ;BCD码带进位自身相加,相当于乘2
015C 3D 240 ADDC A,R5
015D D4 241 DA A; ;十进制调整
015E FD 242 MOV R5,A
015F EC 243 MOV A,R4
0160 3C 244 ADDC A,R4
0161 D4 245 DA A
0162 FC 246 MOV R4,A
0163 EB 247 MOV A,R3
0164 3B 248 ADDC A,R3
0165 FB 249 MOV R3,A; ;双字节十六进制数的万位数不超过6,不用调整
0166 DAED 250 DJNZ R2,HB3; ;处理完16bit
0168 8B32 251 mov 32h,r3
016A 8C33 252 mov 33h,r4
016C 8D34 253 mov 34h,r5
254
016E 22 255 RET
256
A51 MACRO ASSEMBLER CHAO 02/18/2008 17:00:17 PAGE 5
016F 257 TIME0: ;定时器0溢出中断
016F C0E0 258 PUSH ACC
0171 C0D0 259 PUSH PSW ;将PSW和ACC入栈
0173 C28C 260 clr tr0;关定时器
0175 C2A8 261 clr ex0;关外中断
0177 74AA 262 mov a,#0aah
0179 F532 263 mov 32h,a
017B F533 264 mov 33h,a
017D F534 265 mov 34h,a
017F 7800 266 mov r0,#00h
0181 7901 267 mov r1,#01h
0183 B291 268 cpl p1.1
0185 D0D0 269 POP PSW
0187 D0E0 270 POP ACC
0189 32 271 RETI
018A 272 TIME1: ;定时器0的外中断
018A C0E0 273 PUSH ACC
018C C0D0 274 PUSH PSW ;将PSW和ACC入栈
018E C28C 275 clr tr0;关定时器
0190 C2A8 276 clr ex0;关外中断
0192 C2A9 277 clr et0
0194 B297 278 CPL P1.7
0196 E58C 279 mov a,th0;高位
0198 94B3 280 subb a,#0b3h;0b1h
019A F530 281 mov 0030h,a
019C E58A 282 mov a,tl0;低位
019E 946F 283 subb a,#6fh;0e0h
01A0 F531 284 mov 0031h,a
01A2 7800 285 mov r0,#00h
01A4 7900 286 mov r1,#00h
01A6 D0D0 287 POP PSW
01A8 D0E0 288 POP ACC
01AA 32 289 RETI
290
291 ;4位7段数码管各划的数字排列表(共阴)
01AB EB0A676E 292 tab:DB 0ebh,00ah,067h,06eh,08eh,0ech,0edh,02ah,0efh,0eeh,014h,074h
01AF 8EECED2A
01B3 EFEE1474
293 ;0 1 2 3 4 5 6 7 8 9 一。三。
294 END
;至此,应该能够掌握程序的编制方法,对之进行优化,增加功能。
;应继续完成课题:按键功能 数据储存 温度修正 通信 模拟量输出
A51 MACRO ASSEMBLER CHAO 02/18/2008 17:00:17 PAGE 6
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
AAA1 . . . . . . . C ADDR 00AAH A
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
D1MS . . . . . . . C ADDR 00EFH A
DENG . . . . . . . C ADDR 007CH A
DISPLAY. . . . . . C ADDR 00B1H A
DIVD . . . . . . . C ADDR 011CH A
DPLOP. . . . . . . C ADDR 00B6H A
DVD1 . . . . . . . C ADDR 0126H A
DVD2 . . . . . . . C ADDR 0129H A
DVD3 . . . . . . . C ADDR 0145H A
EA . . . . . . . . B ADDR 00A8H.7 A
ET0. . . . . . . . B ADDR 00A8H.1 A
EX0. . . . . . . . B ADDR 00A8H.0 A
F0 . . . . . . . . B ADDR 00D0H.5 A
HB2. . . . . . . . C ADDR 014FH A
HB3. . . . . . . . C ADDR 0155H A
HERE . . . . . . . C ADDR 004AH A
L2 . . . . . . . . C ADDR 009EH A
L3 . . . . . . . . C ADDR 00A2H A
L4 . . . . . . . . C ADDR 00ACH A
LOOP . . . . . . . C ADDR 003BH A
MULD . . . . . . . C ADDR 00F4H A
OV . . . . . . . . B ADDR 00D0H.2 A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
PSW. . . . . . . . D ADDR 00D0H A
START. . . . . . . C ADDR 0036H A
STLOP. . . . . . . C ADDR 00ACH A
TAB. . . . . . . . C ADDR 01ABH A
TH0. . . . . . . . D ADDR 008CH A
TIME0. . . . . . . C ADDR 016FH A
TIME1. . . . . . . C ADDR 018AH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -