PIC Microcontoller Radix Math Method

Binary to ASCII, 8 bit to 3 digits

a.borowski@student.qut.edu.au shares this code:

Here's a nice bit of code that turns a 8 bit binary number into it's hundreds, tens and ones in ASCII, suitable for displaying. Simply put your number in 'bin', call BIN2BCD, then use huns, tens and ones for display.
BIN2BCD

;---------------------


;in: BIN
;out huns. tens, ones

;uses ADD-3 algoerthm

movlw 8
movwf count
clrf huns
clrf tens
clrf ones

BCDADD3

movlw 5
subwf huns, 0
btfsc STATUS, C
CALL ADD3HUNS

movlw 5
subwf tens, 0
btfsc STATUS, C
CALL ADD3TENS

movlw 5
subwf ones, 0
btfsc STATUS, C
CALL ADD3ONES

decf count, 1
bcf STATUS, C
rlf BIN, 1
rlf ones, 1
btfsc ones,4 ; 
CALL CARRYONES
rlf tens, 1

btfsc tens,4 ; 
CALL CARRYTENS
rlf huns,1
bcf STATUS, C

movf count, 0
btfss STATUS, Z
GOTO BCDADD3


movf huns, 0 ; add ASCII Offset
addlw h'30'
movwf huns

movf tens, 0 ; add ASCII Offset
addlw h'30'
movwf tens

movf ones, 0 ; add ASCII Offset
addlw h'30'
movwf ones

RETURN

ADD3HUNS

movlw 3
addwf huns,1

RETURN

ADD3TENS

movlw 3
addwf tens,1

RETURN

ADD3ONES

movlw 3
addwf ones,1

RETURN

CARRYONES
bcf ones, 4
bsf STATUS, C
RETURN

CARRYTENS
bcf tens, 4
bsf STATUS, C
RETURN

Questions:

Comments: