📄 zhujiasm.lst
字号:
02A2 853180 246 MOV P0,31H
02A5 D294 247 SETB P1.4
02A7 C293 248 CLR P1.3
02A9 C292 249 CLR P1.2
02AB 51B0 250 ACALL READ_BUSY
A51 MACRO ASSEMBLER ZHUJIASM 01/24/2008 12:06:00 PAGE 5
02AD D292 251 SETB P1.2
02AF 22 252 RET
02B0 253 READ_BUSY:
02B0 C083 254 PUSH DPH
02B2 C082 255 PUSH DPL
02B4 7580FF 256 WAIT:MOV P0,#0FFH
02B7 C294 257 CLR P1.4
02B9 D293 258 SETB P1.3
02BB C292 259 CLR P1.2
02BD 7D02 260 MOV R5,#02H
02BF 31A8 261 ACALL DELAY_MS
02C1 D292 262 SETB P1.2
02C3 90FFFF 263 MOV DPTR,#0FFFFH
02C6 E0 264 MOVX A,@DPTR
02C7 20E7EA 265 JB ACC.7,WAIT
02CA D082 266 POP DPL
02CC D083 267 POP DPH
02CE 22 268 RET
269 ;**********************************************************
270 ;
271 ;接收的数据显示程序
272 ;
273 ;**********************************************************
02CF 274 DISPLAY_NO:
02CF E53A 275 MOV A,3AH
02D1 B40129 276 CJNE A,#01H,DISPLAY_CORRECT
02D4 753182 277 MOV 31H,#82H
02D7 5194 278 ACALL WRITE_COMM
02D9 852031 279 MOV 31H,' '
02DC 51A2 280 ACALL WRITE_DATA
02DE 7531C4 281 MOV 31H,#0C4H
02E1 5194 282 ACALL WRITE_COMM
02E3 753208 283 MOV 32H,#08H;字符串长度为8个字节
02E6 753300 284 MOV 33H,#00H;设置字符串中指针
02E9 285 DISPLAY_LOOP4:
02E9 E533 286 MOV A,33H
02EB 900330 287 MOV DPTR,#STRING_ERROR
02EE 93 288 MOVC A,@A+DPTR
02EF F531 289 MOV 31H,A
02F1 51A2 290 ACALL WRITE_DATA
02F3 0533 291 INC 33H
02F5 D532F1 292 DJNZ 32H,DISPLAY_LOOP4
02F8 753A00 293 MOV 3AH,#00H
02FB 612F 294 AJMP DISPLAY_END
295
02FD 296 DISPLAY_CORRECT:
02FD 753182 297 MOV 31H,#82H
0300 5194 298 ACALL WRITE_COMM;设置液晶写入的地址
0302 B80009 299 CJNE R0,#00H,DISPLAY_MODE1;判断是否为循环显示模式
0305 E9 300 MOV A,R1
0306 2430 301 ADD A,#30H
0308 F531 302 MOV 31H,A
030A 51A2 303 ACALL WRITE_DATA;将从机号显示出来
030C 6115 304 AJMP DISPLAY_DATA;跳转到采集的数据显示
030E 305 DISPLAY_MODE1:
030E EA 306 MOV A,R2
030F 2430 307 ADD A,#30H
0311 F531 308 MOV 31H,A
0313 51A2 309 ACALL WRITE_DATA
0315 310 DISPLAY_DATA:
0315 7531C4 311 MOV 31H,#0C4H
0318 5194 312 ACALL WRITE_COMM;第二行显示数据时的地址
031A 753408 313 MOV 34H,#08H;数据向左循环的次数
031D 8B35 314 MOV 35H,R3;接收到的数据给35H
031F 315 DISPLAY_LOOP5:
031F E535 316 MOV A,35H
A51 MACRO ASSEMBLER ZHUJIASM 01/24/2008 12:06:00 PAGE 6
0321 23 317 RL A
0322 F535 318 MOV 35H,A
0324 5401 319 ANL A,#01H
0326 2430 320 ADD A,#30H
0328 F531 321 MOV 31H,A
032A 51A2 322 ACALL WRITE_DATA
032C D534F0 323 DJNZ 34H,DISPLAY_LOOP5
032F 324 DISPLAY_END:
032F 22 325 RET
326
0330 20455252 327 STRING_ERROR:DB ' ','E','R','R','O','R','!',' '
0334 4F522120
328 ;**********************************************************
329 ;
330 ;键盘扫描子程序
331 ;返回值R2(按键编号)或R0(显示模式)
332 ;
333 ;**********************************************************
0338 334 SCAN_KEYBOARD:
0338 7EEF 335 MOV R6,#0EFH
033A 75A00F 336 MOV P2,#0FH
033D E5A0 337 MOV A,P2
033F 540F 338 ANL A,#0FH
0341 F4 339 CPL A
0342 540F 340 ANL A,#0FH
0344 602A 341 JZ EXIT_SCAN
0346 7D05 342 MOV R5,#05H
0348 31A8 343 ACALL DELAY_MS
034A E5A0 344 MOV A,P2
034C 540F 345 ANL A,#0FH
034E F4 346 CPL A
034F 540F 347 ANL A,#0FH
0351 601D 348 JZ EXIT_SCAN
0353 349 SCAN_LOOP:
0353 EE 350 MOV A,R6;行扫描输出
0354 F4 351 CPL A
0355 54FE 352 ANL A,#0FEH
0357 6015 353 JZ EXIT_LOOP
0359 8EA0 354 MOV P2,R6
035B E5A0 355 MOV A,P2
035D 540F 356 ANL A,#0FH
035F F4 357 CPL A
0360 540F 358 ANL A,#0FH;查看是否是这一行有键按下
0362 6005 359 JZ NEXT
0364 E5A0 360 MOV A,P2
0366 FC 361 MOV R4,A;将键盘码缓存在R4中
0367 616E 362 AJMP EXIT_LOOP
0369 EE 363 NEXT:MOV A,R6
036A 23 364 RL A
036B FE 365 MOV R6,A;扫描输出值变换
036C 6153 366 AJMP SCAN_LOOP
036E 367 EXIT_LOOP:
036E 7171 368 ACALL COMMAND_TRANSLATION
0370 369 EXIT_SCAN:
0370 22 370 RET
371
0371 372 COMMAND_TRANSLATION:
0371 BCE704 373 KEY1:CJNE R4,#0E7H,KEY2
0374 7A01 374 MOV R2,#01H
0376 61C3 375 AJMP EXIT_TRANSLATION
0378 BCEB04 376 KEY2:CJNE R4,#0EBH,KEY3
037B 7A02 377 MOV R2,#02H
037D 61C3 378 AJMP EXIT_TRANSLATION
037F BCED04 379 KEY3:CJNE R4,#0EDH,KEY4
0382 7A03 380 MOV R2,#03H
0384 61C3 381 AJMP EXIT_TRANSLATION
A51 MACRO ASSEMBLER ZHUJIASM 01/24/2008 12:06:00 PAGE 7
0386 BCD704 382 KEY4:CJNE R4,#0D7H,KEY5
0389 7A04 383 MOV R2,#04H
038B 61C3 384 AJMP EXIT_TRANSLATION
038D BCDB04 385 KEY5:CJNE R4,#0DBH,KEY6
0390 7A05 386 MOV R2,#05H
0392 61C3 387 AJMP EXIT_TRANSLATION
0394 BCDD04 388 KEY6:CJNE R4,#0DDH,KEY7
0397 7A06 389 MOV R2,#06H
0399 61C3 390 AJMP EXIT_TRANSLATION
039B BCB704 391 KEY7:CJNE R4,#0B7H,KEY8
039E 7A07 392 MOV R2,#07H
03A0 61C3 393 AJMP EXIT_TRANSLATION
03A2 BCBB04 394 KEY8:CJNE R4,#0BBH,KEY9
03A5 7A08 395 MOV R2,#08H
03A7 61C3 396 AJMP EXIT_TRANSLATION
03A9 BCBD04 397 KEY9:CJNE R4,#0BDH,KEY0
03AC 7A09 398 MOV R2,#09H
03AE 61C3 399 AJMP EXIT_TRANSLATION
03B0 BC7B04 400 KEY0:CJNE R4,#7BH,KEY_MODE_0
03B3 7A00 401 MOV R2,#00H
03B5 61C3 402 AJMP EXIT_TRANSLATION
03B7 403 KEY_MODE_0:
03B7 BC7704 404 CJNE R4,#77H,KEY_MODE_1
03BA 7800 405 MOV R0,#00H
03BC 61C3 406 AJMP EXIT_TRANSLATION
03BE 407 KEY_MODE_1:
03BE BC7D02 408 CJNE R4,#7DH,EXIT_TRANSLATION
03C1 7801 409 MOV R0,#01H
03C3 410 EXIT_TRANSLATION:
03C3 22 411 RET
412 END
A51 MACRO ASSEMBLER ZHUJIASM 01/24/2008 12:06:00 PAGE 8
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC . . . . . . . . D ADDR 00E0H A
COMMAND_TRANSLATION C ADDR 0371H A
DELAY_MS. . . . . . C ADDR 01A8H A
DELAY_S . . . . . . C ADDR 01B3H A
DEL_MS1 . . . . . . C ADDR 01ABH A
DEL_MS2 . . . . . . C ADDR 01A8H A
DEL_S1. . . . . . . C ADDR 01B6H A
DEL_S2. . . . . . . C ADDR 01B3H A
DISPLAY_CORRECT . . C ADDR 02FDH A
DISPLAY_DATA. . . . C ADDR 0315H A
DISPLAY_END . . . . C ADDR 032FH A
DISPLAY_LOOP1 . . . C ADDR 01F0H A
DISPLAY_LOOP2 . . . C ADDR 020AH A
DISPLAY_LOOP3 . . . C ADDR 0267H A
DISPLAY_LOOP4 . . . C ADDR 02E9H A
DISPLAY_LOOP5 . . . C ADDR 031FH A
DISPLAY_MODE1 . . . C ADDR 030EH A
DISPLAY_NO. . . . . C ADDR 02CFH A
DPH . . . . . . . . D ADDR 0083H A
DPL . . . . . . . . D ADDR 0082H A
EXIT_LOOP . . . . . C ADDR 036EH A
EXIT_SCAN . . . . . C ADDR 0370H A
EXIT_TRANSLATION. . C ADDR 03C3H A
INIT_LCD. . . . . . C ADDR 01C2H A
INPUT_ERROR . . . . C ADDR 019DH A
JUDGE_SCAN. . . . . C ADDR 023DH A
KEY0. . . . . . . . C ADDR 03B0H A
KEY1. . . . . . . . C ADDR 0371H A
KEY2. . . . . . . . C ADDR 0378H A
KEY3. . . . . . . . C ADDR 037FH A
KEY4. . . . . . . . C ADDR 0386H A
KEY5. . . . . . . . C ADDR 038DH A
KEY6. . . . . . . . C ADDR 0394H A
KEY7. . . . . . . . C ADDR 039BH A
KEY8. . . . . . . . C ADDR 03A2H A
KEY9. . . . . . . . C ADDR 03A9H A
KEY_MODE_0. . . . . C ADDR 03B7H A
KEY_MODE_1. . . . . C ADDR 03BEH A
MAIN_LOOP . . . . . C ADDR 0117H A
MODE_0. . . . . . . C ADDR 0123H A
MODE_1. . . . . . . C ADDR 015EH A
NEXT. . . . . . . . C ADDR 0369H A
OUT_SCAN. . . . . . C ADDR 0235H A
P0. . . . . . . . . D ADDR 0080H A
P1. . . . . . . . . D ADDR 0090H A
P2. . . . . . . . . D ADDR 00A0H A
PCON. . . . . . . . D ADDR 0087H A
READ_BUSY . . . . . C ADDR 02B0H A
RESET1. . . . . . . C ADDR 0151H A
RESET2. . . . . . . C ADDR 0190H A
RI. . . . . . . . . B ADDR 0098H.0 A
SBUF. . . . . . . . D ADDR 0099H A
SCAN. . . . . . . . C ADDR 021EH A
SCAN_KEYBOARD . . . C ADDR 0338H A
SCAN_LOOP . . . . . C ADDR 0353H A
SCAN_SENSOR . . . . C ADDR 01E5H A
SCON. . . . . . . . D ADDR 0098H A
START . . . . . . . C ADDR 0100H A
STEP1 . . . . . . . C ADDR 0117H A
STEP2 . . . . . . . C ADDR 01A0H A
A51 MACRO ASSEMBLER ZHUJIASM 01/24/2008 12:06:00 PAGE 9
STRING. . . . . . . C ADDR 0284H A
STRING_DISPLAY. . . C ADDR 0257H A
STRING_ERROR. . . . C ADDR 0330H A
STRING_INITIALIZE . C ADDR 024BH A
STRING_SYSTEM . . . C ADDR 0245H A
TB8 . . . . . . . . B ADDR 0098H.3 A
TH1 . . . . . . . . D ADDR 008DH A
TI. . . . . . . . . B ADDR 0098H.1 A
TL1 . . . . . . . . D ADDR 008BH A
TMOD. . . . . . . . D ADDR 0089H A
TR1 . . . . . . . . B ADDR 0088H.6 A
T_RSTATE. . . . . . B ADDR 0090H.7 A
WAIT. . . . . . . . C ADDR 02B4H A
WRITE_COMM. . . . . C ADDR 0294H A
WRITE_DATA. . . . . C ADDR 02A2H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -