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

📄 lmetx2.lst

📁 induction meter using 89c51 with hex files and asm
💻 LST
📖 第 1 页 / 共 2 页
字号:
0155 C3              222    div_loop:      clr     C               ; clear carry flag
0156 E8              223                   mov     a, r0           ; shift the highest bit of
0157 33              224                   rlc     a               ; the dividend into...
0158 F8              225                   mov     r0, a
0159 E9              226                   mov     a, r1
015A 33              227                   rlc     a
015B F9              228                   mov     r1, a
LMETX2                                                                                                        PAGE 5

015C EE              229                   mov     a, r6           ; ... the lowest bit of the
015D 33              230                   rlc     a               ; partial remainder
015E FE              231                   mov     r6, a
015F EF              232                   mov     a, r7
0160 33              233                   rlc     a
0161 FF              234                   mov     r7, a
0162 EE              235                   mov     a, r6           ; trial subtract divisor
0163 C3              236                   clr     C               ; from partial remainder
0164 9A              237                   subb    a, r2
0165 F582            238                   mov     dpl, a
0167 EF              239                   mov     a, r7
0168 9B              240                   subb    a, r3
0169 F583            241                   mov     dph, a
016B B3              242                   cpl     C               ; complement external borrow
016C 5004            243                   jnc     div_1           ; update partial remainder if
                     244                                           ; borrow
016E AF83            245                   mov     r7, dph         ; update partial remainder
0170 AE82            246                   mov     r6, dpl
0172 EC              247    div_1:         mov     a, r4           ; shift result bit into partial
0173 33              248                   rlc     a               ; quotient
0174 FC              249                   mov     r4, a
0175 ED              250                   mov     a, r5
0176 33              251                   rlc     a
0177 FD              252                   mov     r5, a
0178 D5F0DA          253                   djnz    B, div_loop
017B ED              254                   mov     a, r5           ; put quotient in r0, and r1
017C F9              255                   mov     r1, a
017D EC              256                   mov     a, r4
017E F8              257                   mov     r0, a
017F EF              258                   mov     a, r7           ; get remainder, saved before the
0180 FB              259                   mov     r3, a           ; last subtraction
0181 EE              260                   mov     a, r6
0182 FA              261                   mov     r2, a
0183 22              262                   ret
                     263    
0184                 264    sloptabl1:
0184 FB168015        265    db 0fbh,16h,80h,15h,64h,14h,75h,13h,9ah,12h,0b5h,11h,0e7h,10h,57h,10h
0188 64147513   
018C 9A12B511   
0190 E7105710   
0194 C10F250F        266    db 0c1h,0fh,25h,0fh,0aah,0eh,2bh,0eh,0d2h,0dh,48h,0dh,0e7h,0ch,81h,0ch
0198 AA0E2B0E   
019C D20D480D   
01A0 E70C810C   
01A4 4D0CE00B        267    db 4dh,0ch,0e0h,0bh,0a7h,0bh,6dh,0bh,30h,0bh,0b1h,0ah,0b1h,0ah,6dh,0ah
01A8 A70B6D0B   
01AC 300BB10A   
01B0 B10A6D0A   
01B4 250A            268    db 25h,0ah
                     269    
01B6                 270    hextobcd:
                     271    ;       2 BYTE HEX TO 5 DIGITS BCD
                     272    
                     273    
                     274    ;16 Bit Hex to BCD Conversion for 8051 Microcontroller
                     275    ; ;This routine is for 16 bit Hex to BCD conversion;;;;;;;;;;;;;;;;;;;;;
                     276    ;Accepts a 16 bit binary number in R1,R2 and returns 5 digit BCD in ;R7,R6,R5,R4,R3(upto 64K
                                                                                )
LMETX2                                                                                                        PAGE 6

01B6                 277     Hex2BCD: ;r1=high byte  ;r7 most significant digit
                     278    ;R2 = LSByte
                     279    ;mov r1,41h
                     280    ;mov r2,40h
01B6 7B00            281     MOV R3,#00
01B8 7C00            282     MOV R4,#00
01BA 7D00            283     MOV R5,#00
01BC 7E00            284     MOV R6,#00
01BE 7F00            285     MOV R7,#00
01C0 75F00A          286     MOV B,#10
01C3 EA              287     MOV A,R2
01C4 84              288     DIV AB
01C5 ABF0            289     MOV R3,B ;
01C7 75F00A          290     MOV B,#10 ; R7,R6,R5,R4,R3
01CA 84              291     DIV AB
01CB ACF0            292     MOV R4,B
01CD FD              293     MOV R5,A
01CE B90002          294     CJNE R1,#0H,HIGH_BYTE ; CHECK FOR HIGH BYTE
01D1 802B            295     SJMP ENDD
01D3 7406            296    HIGH_BYTE: MOV A,#6
01D5 2B              297     ADD A,R3
01D6 75F00A          298     MOV B,#10
01D9 84              299     DIV AB
01DA ABF0            300     MOV R3,B
01DC 2405            301     ADD A,#5
01DE 2C              302     ADD A,R4
01DF 75F00A          303     MOV B,#10
01E2 84              304     DIV AB
01E3 ACF0            305     MOV R4,B
01E5 2402            306     ADD A,#2
01E7 2D              307     ADD A,R5
01E8 75F00A          308     MOV B,#10
01EB 84              309     DIV AB
01EC ADF0            310     MOV R5,B
01EE BE0002          311     CJNE R6,#00,ADD_IT
01F1 8001            312     SJMP CONTINUE
01F3 2E              313    ADD_IT: ADD A,R6
01F4 FE              314    CONTINUE: MOV R6,A
01F5 D9DC            315     DJNZ R1,HIGH_BYTE
01F7 75F00A          316     MOV B, #10
01FA 84              317     DIV AB
01FB AEF0            318     MOV R6,B
01FD FF              319     MOV R7,A
01FE 22              320    ENDD: ret
                     321    
                     322    ;====================================================================
                     323    ; subroutine UMUL16
                     324    ; 16-Bit x 16-Bit to 32-Bit Product Unsigned Multiply
                     325    ;
                     326    ; input:    r1, r0 = multiplicand X
                     327    ;           r3, r2 = multiplier Y
                     328    ;
                     329    ; output:   r3, r2, r1, r0 = product P = X x Y
                     330    ;
                     331    ; alters:   acc, C
                     332    ;====================================================================
                     333    
01FF C0F0            334    UMUL16:        push    b
LMETX2                                                                                                        PAGE 7

0201 C082            335                   push    dpl
0203 C083            336                   push    dph
0205 E8              337                   mov     a, r0
0206 8AF0            338                   mov     b, r2
0208 A4              339                   mul     ab              ; multiply XL x YL
0209 85F082          340                   mov     dpl, b          ; temp save XLYL h
020C C8              341                   xch     a, r0           ; save XLYL l, reload XL
020D 8BF0            342                   mov     b, r3
020F A4              343                   mul     ab              ; multiply XL x YH
0210 2582            344                   add     a, dpl
0212 F582            345                   mov     dpl, a          ; temp save XLYH l + XLYL h
0214 E4              346                   clr     a
0215 35F0            347                   addc    a, b
0217 F583            348                   mov     dph, a          ; temp save XLYH h + C
0219 EA              349                   mov     a, r2
021A 89F0            350                   mov     b, r1
021C A4              351                   mul     ab              ; multiply XH x YL
021D 2582            352                   add     a, dpl
021F F582            353                   mov     dpl, a          ; save XLYH l + XLYL h + XHYL l
0221 E583            354                   mov     a, dph
0223 35F0            355                   addc    a, b            ; (XLYH h + C) + XHYL h
0225 F583            356                   mov     dph, a
0227 92D5            357                   mov     f0, C           ; save intermediate carry
0229 EB              358                   mov     a, r3
022A 89F0            359                   mov     b, r1
022C A4              360                   mul     ab              ; multiply XH x YH
022D 2583            361                   add     a, dph          ; (XLYH h + C) + XHYL h + XHYH l
022F FA              362                   mov     r2, a
0230 E4              363                   clr     a
0231 35F0            364                   addc    a, b            ; XHYH h + C
0233 A2D5            365                   mov     C, f0           ; retrieve intermediate carry
0235 3400            366                   addc    a, #0
0237 FB              367                   mov     r3, a
0238 A982            368                   mov     r1, dpl
023A D083            369                   pop     dph
023C D082            370                   pop     dpl
023E D0F0            371                   pop     b
0240 22              372                   ret
                     373    
                     374                   end
                     375    

VERSION 1.2k ASSEMBLY COMPLETE, 0 ERRORS FOUND
LMETX2                                                                                                        PAGE 8

ADD_IT . . . . . . . . . . . . .  C ADDR  01F3H  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
BEG. . . . . . . . . . . . . . .  C ADDR  0030H  NOT USED  
BEGINNING. . . . . . . . . . . .  C ADDR  0043H  NOT USED  
CALC . . . . . . . . . . . . . .  C ADDR  0105H  
CHK. . . . . . . . . . . . . . .  C ADDR  0059H  
CHK2 . . . . . . . . . . . . . .  C ADDR  0092H  
CONTINUE . . . . . . . . . . . .  C ADDR  01F4H  
DELAY1 . . . . . . . . . . . . .  C ADDR  00FEH  
DISP1. . . . . . . . . . . . . .  C ADDR  00B8H  
DIS_WAIT . . . . . . . . . . . .  C ADDR  00B0H  
DIV_1. . . . . . . . . . . . . .  C ADDR  0172H  
DIV_LOOP . . . . . . . . . . . .  C ADDR  0155H  
DPH. . . . . . . . . . . . . . .  D ADDR  0083H  PREDEFINED  
DPL. . . . . . . . . . . . . . .  D ADDR  0082H  PREDEFINED  
DR . . . . . . . . . . . . . . .  C ADDR  00AAH  NOT USED  
ENDD . . . . . . . . . . . . . .  C ADDR  01FEH  
F0 . . . . . . . . . . . . . . .  B ADDR  00D5H  PREDEFINED  
HEX2BCD. . . . . . . . . . . . .  C ADDR  01B6H  
HEXTOBCD . . . . . . . . . . . .  C ADDR  01B6H  NOT USED  
HIGH_BYTE. . . . . . . . . . . .  C ADDR  01D3H  
LEDCODE. . . . . . . . . . . . .  C ADDR  00EEH  
LFIND. . . . . . . . . . . . . .  C ADDR  0048H  NOT USED  
N. . . . . . . . . . . . . . . .  C ADDR  0100H  
P1 . . . . . . . . . . . . . . .  D ADDR  0090H  PREDEFINED  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
PQ2. . . . . . . . . . . . . . .  C ADDR  00C5H  
PV3. . . . . . . . . . . . . . .  C ADDR  00CBH  NOT USED  
REFRESH. . . . . . . . . . . . .  C ADDR  00B8H  NOT USED  
REFRESH1 . . . . . . . . . . . .  C ADDR  00C1H  
ROTATE2. . . . . . . . . . . . .  C ADDR  0113H  
S1 . . . . . . . . . . . . . . .  C ADDR  00D8H  NOT USED  
S3 . . . . . . . . . . . . . . .  C ADDR  00D6H  NOT USED  
S4 . . . . . . . . . . . . . . .  C ADDR  00E7H  NOT USED  
S5 . . . . . . . . . . . . . . .  C ADDR  00E7H  NOT USED  
S6 . . . . . . . . . . . . . . .  C ADDR  00EDH  NOT USED  
SEGCODE. . . . . . . . . . . . .  C ADDR  00D3H  NOT USED  
SEGDISP. . . . . . . . . . . . .  C ADDR  00CCH  
SHIF . . . . . . . . . . . . . .  C ADDR  0139H  
SLOPTABL1. . . . . . . . . . . .  C ADDR  0184H  
SP . . . . . . . . . . . . . . .  D ADDR  0081H  PREDEFINED  
START. . . . . . . . . . . . . .  C ADDR  003DH  
STOP2. . . . . . . . . . . . . .  C ADDR  0095H  NOT USED  
STOPT. . . . . . . . . . . . . .  C ADDR  005CH  NOT USED  
T1HI . . . . . . . . . . . . . .    NUMB  0056H  
T1LO . . . . . . . . . . . . . .    NUMB  0055H  
TEMP1. . . . . . . . . . . . . .    NUMB  0053H  
TEMP2. . . . . . . . . . . . . .    NUMB  0054H  
TEMP3. . . . . . . . . . . . . .    NUMB  0055H  
TEMP4. . . . . . . . . . . . . .    NUMB  0056H  
TH0. . . . . . . . . . . . . . .  D ADDR  008CH  PREDEFINED  
TL0. . . . . . . . . . . . . . .  D ADDR  008AH  PREDEFINED  
TMOD . . . . . . . . . . . . . .  D ADDR  0089H  PREDEFINED  
TR0. . . . . . . . . . . . . . .  B ADDR  008CH  PREDEFINED  
UDIV16 . . . . . . . . . . . . .  C ADDR  014EH  
UMUL16 . . . . . . . . . . . . .  C ADDR  01FFH  
WAIT1. . . . . . . . . . . . . .  C ADDR  0064H  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -