by Djula Djarmati
;**********************************************************************************************
;CONVERT 10-BIT BINARY TO THREE DECIMAL DIGITS (28 cycles, 25 program
memory)
;Input word: Digits+1:Digits
;Output digits: Digits+2:Digits+1:Digits
;Trashes: PRODH, PRODL
;**********************************************************************************************
Bin_To_Dec_999 movlw d'41' ;Multiply by 0.01 (41/4096)
mulwf Digits+1 ;
movff PRODL, Digits+2 ;
mulwf Digits ;
movf PRODH, w ;
addwf Digits+2, w ;
mullw 0x10 ;Lose the lower 8 bits
and shift
movf PRODH, w ;result 4 bits left
(divide by 4096)
movwf Digits+2 ;Save result
mullw d'100' ;and then multiply it
by 100
movf PRODL, w ;
subwf Digits, f ;Subtract from original
movf PRODH, w ;to get
subwfb Digits+1, f ;remainder
movf Digits, w ;Split remainder (0-99)
to two decimals
mullw D'205' ;
movlw D'32' ;Multiply by 0.1
mulwf PRODH ;(205/256 * 32/256)
movf PRODH, w ;
movwf Digits+1 ;Save result
mullw D'10' ;and then multiply it by 10
movf PRODL, w ;Subtract from original
subwf Digits, f ;Save remainder
return ;Done
Comments: