> All kind of shortcuts are possible (like an effective
> byte
> routine and split words/dwords in chunck of 100 rather than
> 10). But
> they all take more flash and that is most precious...
We could try that ;-)
Here's the two-digit-procedure. Sorry, it is in assembler...
--
-- clear this bit when starting to output a number. It will be set
-- by the procedure as soon as the first non-zero digit has been
-- printed.
var bit _print_display_first_zero=false
--
-- set this bit only when printing the last two digits of a number.
-- It will make sure that if the number is zero, exactly one "0" is
-- printed.
var bit _print_display_last_zero=false
procedure _print_two_digits_fast(volatile byte out device, byte in data) is
-- Prints two digits to device.
-- Do not call with data>99, it will print garbage.
var bit _print_first_digit, _print_last_digit
assembler
LOCAL _divide_10_loop, l_print_first_digit, l_print_last_digit
movlw "0"-1
movwf digit
movlw 10
_divide_10_loop:
incf digit,f
subwf data,f
btfsc STATUS_C
goto _divide_10_loop
movlw "0"+10
addwf data,f
bsf _print_last_digit
bsf _print_first_digit
btfsc _print_display_first_zero
goto l_print_last_digit
movlw "0"
xorwf digit,w
btfss STATUS_Z
goto l_print_last_digit
bcf _print_first_digit
l_print_first_digit:
btfsc _print_display_last_zero
goto l_print_last_digit
movlw "0"
xorwf data,w
btfsc STATUS_Z
bcf _print_last_digit
l_print_last_digit:
btfsc _print_first_digit
bsf _print_display_first_zero
btfsc _print_last_digit
bsf _print_display_first_zero
end assembler
if _print_first_digit then
device=digit
end if
if _print_last_digit then
device=data
end if
end procedure
Does anyone know if I have to take measures to ensure correct banking, or does
the compiler care about that automatically?
The procedure should use about 50 words of code, and it executes in an average
of 84 instruction cycles.
Greets,
Kiste
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/jallib?hl=en.