
Originally Posted by
Charles Linquis
I'll try timing it Monday.
Thanks Charles,
No worries, I was just curious if pbpl was any slower compared to using pbp with the square root assembly code. Since pbpl uses a bit more space, I was curious to know if it was faster, or slower. It appears that a 20mhz chip can do about 5 or 6 of these in 1 ms using the assembly include file.
If anyone is interested, to make things easier, I have attached it as an include file. It can only be used on PIC18 chips, and according to TB040, must be modified for use with PIC17 devices that have a hardware multiplier. But if you did not have a new version of pbp (that had pbpl included), this would allow you to perform 32 bit square root. And it is much smaller than compiling in pbpl.
To use, load argh with the upper 16 bits, and argl with the lower 16 bits, then call square. Result will be in word variable RES.
Code:
INCLUDE "square.pbp"
'some defines here
main:
'and a little bit of code there....
ARGH = $0001 'load upper 16 bits into argument (any value you want)
ARGL = $ffff 'load lower 16 bits into argument (any value you want)
call square 'call square assembly function
lcdout $FE,1,#RES 'print result to lcd
Here are the results from codetimer.bas:
Time: 84.66328 usec
OSC Freq: 48 Mhz
Bookmarks