; by Rich Leggitt with tweaks by Scott Dattalo and bugfix by Dmitry Kiryashov and Nikolai Golovchenko ; given 16 bit data in HI and LO, extract decimal digits ; requires one Output register called temp, HI and LO are destroyed. ; 42 instructions and less than 269 (or 252 with known_zero) instructions executed clrf temp goto $+2 ;[NG] was: skip sub10k incf temp,f movlw 10000 & 255 subwf LO,f ;Scott Dattalo says: ;If you have a ram location that's known to be zero, then ;the following [the IF] can be replaced with [the ELSE] IFNDEF known_zero movlw 10000 >> 8 skpc movlw (10000>>8)+1 ;[NG] was: addlw 1 ; this sucks subwf HI,f ELSE rlf known_zero,W sublw (10000>>8)+1 ;bugfix by Dmitry Kiryashov and Nikolai Golovchenko subwf Hi,F ENDIF bc sub10k ;9*7=63/8*7=56 inst in loop for 60900 (worst) output(temp); movlw 10 movwf temp add1K decf temp,f movlw 1000 & 255 addwf LO,f ;Scott Dattalo says: ;If you have a ram location that's known to be zero, then ;the following [the IF] can be replaced with [the ELSE] IFNDEF known_zero movlw 1000 >> 8 skpnc movlw (1000>>8)+1 ;[NG] was: addlw 1 addwf HI,f ELSE rlf known_zero,w addlw 1000 >> 8 addwf HI,f ENDIF bnc add1k ;9*10=90/8*10=80 inst in loop for 60900 output(temp); ;Scott takes over here clrf temp movlw 100 goto $+2 ;[NG] was: skip sub100 incf temp,f subwf LO,f skpnc ;[NG] was: skpc goto sub100 decf HI,f btfss HI,7 ;Check msb instead of carry for underflow. goto sub100 ;4 inst per loop to 200 then 7 per loop to 900. ;Total 64(?) in loop for worst case ;at this point, HI = 0xff, and 0 <= LO <= 99 output(temp) movlw 10 movwf temp add10 decf temp,f addwf LO,f bnc add10 ;40 inst in loop for worst case. output(temp); output(LO); return
file: /Techref/microchip/math/radix/b2a-16b5a-rl.htm, 3KB, , updated: 2002/10/31 15:57, local time: 2024/11/5 08:42,
52.15.136.88:LOG IN ©2024 PLEASE DON'T RIP! THIS SITE CLOSES OCT 28, 2024 SO LONG AND THANKS FOR ALL THE FISH!
|
©2024 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://linistepper.com/Techref/microchip/math/radix/b2a-16b5a-rl.htm"> PIC Microcontoller Radix Math Method </A> |
Did you find what you needed? |