Full Version : 8-Bit to Percent (PIC ASM)
avr >>PIC 8051 ZILOG ARM TI H8 ETC >>8-Bit to Percent (PIC ASM)


Admin3- 04-18-2006
Scale 8 bits to a percent

Dmitry Kiryashov says: Possible realization of 1 + 1/256 + ... correction.

CODE

;1/256 * (1 + 1/256) =~ 0.999985 / 255;

scale255to100:                 ;25 = 16+8+1
       clrf    temp           ;int
       clrf    temp1          ;frac

       addwf   temp,F         ;1
       rrf     temp,F         ;/2
       rrf     temp1,F

       rrf     temp,F         ;/4
       rrf     temp1,F
       rrf     temp,F         ;/8
       rrf     temp1,F

       addwf   temp,F         ;8
       rrf     temp,F         ;/16
       rrf     temp1,F

       addwf   temp,F         ;16
       rrf     temp,F         ;/32
       rrf     temp1,F

       rrf     temp,W         ;/64
       rrf     temp1,F
;
;       movwf   temp2          ;1/256/256     if longer tail
;       movwf   temp3          ;1/256/256/256 is required
;       etc...
;
       addwf   temp1,F        ;1 + 1/256 correction
       btfss   temp1,7        ;either round if >= 0.5
       skpnc                  ;or take carry
       addlw   1              ;temp1 holds frac part
;
;       movwf   temp           ;answer is either W or temp
       return

If >=0.5 correction isn't required <btfss temp1,7> line
should be commented.



Forumer™ is Voted #1 Free Forum Hosting provider
Build your own community today with the largest message board hosting company.