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: