📄 ll.lst
字号:
334:
335:
336:
337:
338:
339:
340:
341:
342: ;=========================================================================
343: ; 液晶显示器初始化
344: ;=========================================================================
345: 014D 74 38 INIT: MOV A,#38H ;8位、2行、5*7字符方式
346: 014F 12 01 6D LCALL WRCMD
347: 0152 74 0C MOV A,#LCD_SETVISIBLE+4 ;打开显示
348: 0154 12 01 6D LCALL WRCMD
349: 0157 74 80 MOV A,#LCD_SETDDADDR ; 开始显示的位置在最左边
350: 0159 12 01 6D LCALL WRCMD
351: 015C 74 07 MOV A,#LCD_SETMODE+3 ; 增量方式,光标移动
352: 015E 12 01 6D LCALL WRCMD
353: 0161 22 RET
354: ;===========================================================================
355: ;清屏并且设置初始化条件
356: ;Clears the LCD display and sets the initialisation conditions.
357: ;===========================================================================
358: 0162 74 01 CLS: MOV A,#LCD_CLS
359: 0164 12 01 6D LCALL WRCMD
360: 0167 74 80 MOV A,#LCD_SETDDADDR ;开始显示的位置在最左边
361: 0169 12 01 6D LCALL WRCMD
362: 016C 22 RET
363: ;==============================================================================
364: ;写命令子程序,命令在累加器A中
365: ;Sub routine to write command:
366: ;==============================================================================
367: 016D 90 00 80 WRCMD: MOV DPTR,#LCD_CMD_WR
368: 0170 F0 MOVX @DPTR,A
369: 0171 80 04 SJMP WTBUSY
370: ;------------------------------------------------------------------------------
371: ;将字符写入LCD1602液晶显示器的显存,要显示的字符在累加器A中
372: ; Subroutine to Write a Character to the LCD Display.
373: ;-------------------------------------------------------------------------------
374: 0173 90 00 81 WRDATA: MOV DPTR,#LCD_DATA_WR
375: 0176 F0 MOVX @DPTR,A
376: ;--------------------------------------------------------------------------------
377: ;判断液晶显示器是否忙?
378: ; Subroutine to wait for a busy clear.
379: ;--------------------------------------------------------------------------------
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 8
Line I Addr Code Source
380: 0177 90 00 82 WTBUSY: MOV DPTR,#LCD_BUSY_RD
381: 017A E0 MOVX A,@DPTR
382: 017B 20 E7 F9 JB ACC.7,WTBUSY
383: 017E 22 RET
384: ;===================================================================
385:
386:
387:
388:
389: 017F 7F 50 D1MS: MOV R7,#80 ;255
390: 0181 DF FE DJNZ R7,$
391: 0183 22 RET
392: ;=========================================================
393:
394:
395:
396:
397:
398: ;==========================================================
399: ;多字节乘法程序
400: ;被乘数在R2R3,乘数在R6R7,积在R4R5R6R7
401: ;==========================================================
402: 0184 EB DMUL: MOV A,R3
403: 0185 8F F0 MOV B,R7
404: 0187 A4 MUL AB
405: 0188 CF XCH A,R7
406: 0189 AD F0 MOV R5,B
407: 018B 8A F0 MOV B,R2
408: 018D A4 MUL AB
409: 018E 2D ADD A,R5
410: 018F FC MOV R4,A
411: 0190 E4 CLR A
412: 0191 35 F0 ADDC A,B
413: 0193 FD MOV R5,A
414: 0194 EE MOV A,R6
415: 0195 8B F0 MOV B,R3
416: 0197 A4 MUL AB
417: 0198 2C ADD A,R4
418: 0199 CE XCH A,R6
419: 019A C5 F0 XCH A,B
420: 019C 3D ADDC A,R5
421: 019D FD MOV R5,A
422: 019E 92 D5 MOV F0,C
423: 01A0 EA MOV A,R2
424: 01A1 A4 MUL AB
425: 01A2 2D ADD A,R5
426: 01A3 FD MOV R5,A
427: 01A4 E4 CLR A
428: 01A5 92 E0 MOV ACC.0,C
429: 01A7 A2 D5 MOV C,F0
430: 01A9 35 F0 ADDC A,B
431: 01AB FC MOV R4,A
432: 01AC 22 RET
433:
434:
435:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 9
Line I Addr Code Source
436:
437:
438:
439:
440: ;====================================================
441: ;4字节加1字节程序
442: ;被加数在R4R5R6R7中,加数在A中
443: ;和在R4R5R6R7中
444: ;====================================================
445: 01AD 2F JIAFA: ADD A,R7
446: 01AE FF MOV R7,A
447: 01AF E4 CLR A
448: 01B0 3E ADDC A,R6
449: 01B1 FE MOV R6,A
450: 01B2 E4 CLR A
451: 01B3 3D ADDC A,R5
452: 01B4 FD MOV R5,A
453: 01B5 E4 CLR A
454: 01B6 3C ADDC A,R4
455: 01B7 FC MOV R4,A
456: 01B8 22 RET
457:
458:
459:
460:
461:
462:
463:
464: ;===========================================================
465: ;4字节除以2字节的除法程序
466: ;被除数在DIVDHH、DIVDHL、DIVDLH和DIVDLL单元
467: ;除数在DIVH和DIVL单元
468: ;商在被除数单元
469: ;余数在TEMPH和TEMPL单元
470: ;===========================================================
471: 01B9 E5 26 CHUFA: MOV A,DIVH ;除数为零?
472: 01BB 45 25 ORL A,DIVL
473: 01BD 70 03 JNZ DIVD0
474: 01BF D2 D2 SETB OV ;为零,置溢出标志
475: 01C1 22 RET
476: 01C2 75 27 00 DIVD0: MOV TEMPL,#0
477: 01C5 75 28 00 MOV TEMPH,#0
478: 01C8 75 F0 20 MOV B,#32
479: 01CB C3 DIVD1: CLR C
480: 01CC E5 21 MOV A,DIVDLL
481: 01CE 33 RLC A
482: 01CF F5 21 MOV DIVDLL,A
483: 01D1 E5 22 MOV A,DIVDLH
484: 01D3 33 RLC A
485: 01D4 F5 22 MOV DIVDLH,A
486: 01D6 E5 23 MOV A,DIVDHL
487: 01D8 33 RLC A
488: 01D9 F5 23 MOV DIVDHL,A
489: 01DB E5 24 MOV A,DIVDHH
490: 01DD 33 RLC A
491: 01DE F5 24 MOV DIVDHH,A
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 10
Line I Addr Code Source
492: 01E0 E5 27 MOV A,TEMPL
493: 01E2 33 RLC A
494: 01E3 F5 27 MOV TEMPL,A
495: 01E5 C5 28 XCH A,TEMPH
496: 01E7 33 RLC A
497: 01E8 C5 28 XCH A,TEMPH
498: 01EA 92 D5 MOV F0,C
499: 01EC 95 25 SUBB A,DIVL
500: 01EE FF MOV R7,A
501: 01EF E5 28 MOV A,TEMPH
502: 01F1 95 26 SUBB A,DIVH
503: 01F3 B0 D5 ANL C,/F0
504: 01F5 40 06 JC DIVD2
505: 01F7 8F 27 MOV TEMPL,R7
506: 01F9 F5 28 MOV TEMPH,A
507: 01FB 05 21 INC DIVDLL
508: 01FD D5 F0 CB DIVD2: DJNZ B,DIVD1
509: 0200 C2 D2 CLR OV
510: 0202 22 RET
511:
512:
513:
514: ;============================================================
515: ;BCD转换
516: ;============================================================
517: 0203 75 F0 64 BTOD: MOV B,#100
518: 0206 84 DIV AB
519: 0207 FB MOV R3,A
520: 0208 74 0A MOV A,#10
521: 020A C5 F0 XCH A,B
522: 020C 84 DIV AB
523: 020D C4 SWAP A
524: 020E 45 F0 ORL A,B
525:
526: 0210 FD MOV R5,A
527: 0211 C4 SWAP A
528: 0212 54 0F ANL A,#0FH
529: 0214 FC MOV R4,A
530: 0215 ED MOV A,R5
531: 0216 54 0F ANL A,#0FH
532: 0218 FD MOV R5,A
533: 0219 22 RET
534: ;============================================================
535: END
536:
537:
538:
register banks used: ---
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 11
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 12
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
AC BIT D6
ACC DATA E0
AD NUMBER 0029 15
ADC0 NUMBER 0078 5
AD_DISPLAY CODE 009A 151
AD_START CODE 0142 302
ALL_DISPLAY CODE 00D0 200
B DATA F0
BIJIAO CODE 003F 60
BTOD CODE 0203 517
CHUFA CODE 01B9 471
CLS CODE 0162 358
CY BIT D7
D1MS CODE 017F 389
D1S CODE 0136 284
DIVD0 CODE 01C2 476
DIVD1 CODE 01CB 479
DIVD2 CODE 01FD 508
DIVDHH NUMBER 0024 10
DIVDHL NUMBER 0023 9
DIVDLH NUMBER 0022 8
DIVDLL NUMBER 0021 7
DIVH NUMBER 0026 12
DIVL NUMBER 0025 11
DMUL CODE 0184 402
DPH DATA 83
DPL DATA 82
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
G0 CODE 007A 119
G1 CODE 007D 122
G2 CODE 0080 125
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INIT CODE 014D 345
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
JIAFA CODE 01AD 445
JIANPAN CODE 006A 105
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 13
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
KEY NUMBER 002A 16
KEY_DISPLAY CODE 0100 239
LCD_BUSY_RD NUMBER 0082 24
LCD_CLS NUMBER 0001 30
LCD_CMD_WR NUMBER 0080 22
LCD_DATA_RD NUMBER 0083 25
LCD_DATA_WR NUMBER 0081 23
LCD_HOME NUMBER 0002 31
LCD_SETCGADDR NUMBER 0040 36
LCD_SETDDADDR NUMBER 0080 37
LCD_SETFUNCTION NUMBER 0020 35
LCD_SETMODE NUMBER 0004 32
LCD_SETVISIBLE NUMBER 0008 33
LCD_SHIFT NUMBER 0010 34
M4 CODE 0138 285
M5 CODE 013A 286
MAIN CODE 003C 56
NEQ CODE 0058 78
OV BIT D2
OW CODE 0062 88
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PROG0 CODE 0083 128
PROG1 CODE 008B 135
PROG2 CODE 0092 142
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
START CODE 0030 49
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TEMPH NUMBER 0028 14
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 14
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
TEMPL NUMBER 0027 13
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WR BIT B6
WRCMD CODE 016D 367
WRDATA CODE 0173 374
WTBUSY CODE 0177 380
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -