CBLOCK 0X20
BCDvalH
BCDvalM
BCDvalL
MCount
NumbHi
NumbLo
ENDC
;
; Binary to BCD conversion routine
; 16 bit number to convert is in NumbHi, NumbLo
; result is set in BCDval HML
;
HexBCD movlw d'16'
movwf MCount
clrf BCDvalH
clrf BCDvalM
clrf BCDvalL
bcf STATUS,C
loop16 rlf NumbLo,F
rlf NumbHi,F
rlf BCDvalL,F
rlf BCDvalM,F
rlf BCDvalH,F
decf MCount,F
btfsc STATUS,Z
return
adjDEC movlw BCDvalL
movwf FSR
call adjBCD
movlw BCDvalM
movwf FSR
call adjBCD
movlw BCDvalH
movwf FSR
call adjBCD
goto loop16
adjBCD movlw d'3'
addwf INDF,W
movwf Temp
btfsc Temp,3
movwf INDF
movlw 30h
addwf INDF,W
movwf Temp
btfsc Temp,7
movwf INDF
return
end