Dmitry Kiryashov says: Possible realization of 1 + 1/256 + ... correction.
;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.
See also:
| file: /Techref/microchip/math/scale/8bxperaccu.htm, 1KB, , updated: 2000/2/28 11:47, local time: 2012/2/9 23:04,
38.107.179.233:LOG IN |
| ©2012 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://www.piclist.com/techref/microchip/math/scale/8bxperaccu.htm"> PIC Microcontoller Math Method Scale 8 bits to a percent accuratly</A> |
| Did you find what you needed? |
.