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 + -
显示快捷键?