⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wl012.lst

📁 计数器实验 * * 定时器1工作于16位计数模式
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     141     ;===============================================================================
0076                 142     UPDATE_DISBUF:
                     143             USING   1
                     144     
0076 AF8D            145             MOV     R7,TH1
0078 AE8B            146             MOV     R6,TL1
007A 120000   F      147             LCALL   BIN16BCD
                     148             
007D 900000   F      149             MOV     DPTR, #DIS_CODE
                     150     
0080 ED              151             MOV     A,R5
0081 540F            152             ANL     A,#0FH
0083 93              153             MOVC    A,@A+DPTR
0084 F500     F      154             MOV     DIS_BUF+4, A
                     155             
0086 EC              156             MOV     A,R4
0087 03              157             RR      A
0088 03              158             RR      A
0089 03              159             RR      A
008A 03              160             RR      A
008B 540F            161             ANL     A,#0FH
008D 93              162             MOVC    A,@A+DPTR
008E F500     F      163             MOV     DIS_BUF+3,A
                     164             
0090 EC              165             MOV     A,R4
0091 540F            166             ANL     A,#0FH
0093 93              167             MOVC    A,@A+DPTR
0094 F500     F      168             MOV     DIS_BUF+2,A
                     169             
0096 EB              170             MOV     A,R3
0097 03              171             RR      A
0098 03              172             RR      A
0099 03              173             RR      A
009A 03              174             RR      A
009B 540F            175             ANL     A,#0FH
009D 93              176             MOVC    A,@A+DPTR
009E F500     F      177             MOV     DIS_BUF+1,A
                     178             
00A0 EB              179             MOV     A,R3
00A1 540F            180             ANL     A,#0FH
00A3 93              181             MOVC    A,@A+DPTR
00A4 F500     F      182             MOV     DIS_BUF,A
                     183     
00A6 22              184             RET     
                     185     ; END OF UPDATE_DISBUF
                     186     
                     187     
                     188     ;===============================================================================
00A7                 189     BIN16BCD:
                     190     ; 将16位二进制数转化为5位压缩的BCD码
A51 MACRO ASSEMBLER  WL012                                                                02/12/2004 12:06:14 PAGE     4

                     191     ; 传入参数: R7:R6 --- 16位二进数; R7 --- MSB; R6 --- LSB
                     192     ; 返回参数: R5:R4:R3 --- 5位压缩的BCD码;  R5 --- MSB; R3 --- LSB
                     193     ; 
                     194             
00A7 E4              195             CLR     A
00A8 FB              196             MOV     R3,A                    ; 
00A9 FC              197             MOV     R4,A
00AA FD              198             MOV     R5,A
                     199             
00AB 7810            200             MOV     R0,#16                  ; 共需左移16次
                     201     
00AD                 202     BIN16BCD_LP:
00AD EE              203             MOV     A,R6                    ; 将R6左移一位到R7
00AE 33              204             RLC     A
00AF FE              205             MOV     R6,A
00B0 EF              206             MOV     A,R7                    ; 将R6的高位移入到R7
00B1 33              207             RLC     A                       ; 将R7的高位移出到C
00B2 FF              208             MOV     R7,A                    
                     209             
                     210             ;-------------------------------
00B3 EB              211             MOV     A,R3                    ; 将C移入到目标数(BCD)的最低位
00B4 3B              212             ADDC    A,R3                    ; 这里用ADDC进行移位,而没有使用RLC,
                     213                                             ; 是为下面能正确的使用十进制调整指令DA
00B5 D4              214             DA      A                       ; 十进制调整
00B6 FB              215             MOV     R3,A                    ; 存回
                     216             
00B7 EC              217             MOV     A,R4                    ; 将R3的高位移入
00B8 3C              218             ADDC    A,R4                    ; 
00B9 D4              219             DA      A                       ; 十进制调整
00BA FC              220             MOV     R4,A                    ; 存回
                     221             
00BB ED              222             MOV     A,R5                    ; 将R4的高位移入
00BC 3D              223             ADDC    A,R5
00BD D4              224             DA      A                       ; 十进制调整
00BE FD              225             MOV     R5,A                    ; 存回
                     226             
00BF D8EC            227             DJNZ    R0,BIN16BCD_LP
                     228             
00C1 22              229             RET
                     230     
00C2                 231     DIS_CODE:
00C2 C0              232             DB      0C0H
00C3 F9              233             DB      0F9H
00C4 A4              234             DB      0A4H
00C5 B0              235             DB      0B0H
00C6 99              236             DB      099H
00C7 92              237             DB      092H
00C8 82              238             DB      082H
00C9 F8              239             DB      0F8H
00CA 80              240             DB      080H
00CB 90              241             DB      090H
00CC FF              242             DB      0FFH 
                     243     
                     244             END
A51 MACRO ASSEMBLER  WL012                                                                02/12/2004 12:06:14 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -