Tengo problemas con algunas de las rutinas que encontré en el foro para la conversión de Binario a BCD. Sé que existen varios ejemplos, sin embargo encontrar una que funcione correctamente ha sido imposible. Algunas no sirven en la simulación con proteus y tampoco lo hacen en el pic.
La que pongo a continuación me sirve bien en proteus, y en un principio estaba conforme, pero cuando la corrí en el pic veo que solo salen ceros.
CBLOCK
contador1
R0
R1
R2
R3
R4
byte0
byte1
byte2
byte3
temp
ENDC
B2_BCD
bcf STATUS,C
movlw .32
movwf contador1
clrf R4
clrf R3
clrf R2
clrf R1
clrf R0
loop
rlf byte0,f
rlf byte1,f
rlf byte2,f
rlf byte3,f ;parte alta binario
rlf R0,f
rlf R1,f
rlf R2,f
rlf R3,f
rlf R4,f
decfsz contador1,f
goto adjDEC
return
adjDEC
movlw R0
movwf FSR
call adjBCD
movlw R1
movwf FSR
call adjBCD
movlw R2
movwf FSR
call adjBCD
movlw R3
movwf FSR
call adjBCD
movlw R4
movwf FSR
call adjBCD
goto loop
adjBCD
movlw 3
addwf INDF,W
movwf temp
btfsc temp,3 ; test if result > 7
movwf INDF
movlw 30
addwf INDF,W
movwf temp
btfsc temp,7 ; test if result > 7
movwf INDF ; save as MSD
return
Sé que este tema ha es recurrente y que seguro se ha solucionado en otras ocasiones, pero por los links como:
http://todopic.mforos.com/79706/720764-matematicas/http://todopic.mforos.com/79706/1103921-rutina-de-conversion-de-binario-a-bcd-16-bits/No me sirven, ya que no me permite bajar los archivos.
Si alguien tiene una rutina de al menos unos 10 bits, se lo agradeceria. La finalidad de esta es convertir el ADRESH y ADRESL a BCD para que sea visto en una pantalla de lcd mediante el uso de un 16F877.
Gracias de antemano.