Para pasar un número bcd a código ascci solo debes sumar 48 en decimal, o 0x30h (en hexadecimal)
Antes de hacer eso, hay que separar cada nibble del número en BCD, sino mostrará cualquier cosa.
Por ej.
BCD = 0x34 = 52dec
Lo que se quiere visualizar es claramente 34, si le sumamos 48dec a 52dec así sin más, visualizaremos el caracter Ascii 100, que es una "
d"
Lo que debe hacerse es tomar el nibble superior, moverlo al nibble inferior y luego borrar el nibble superior.
movlw 0x34
movwf NUM_BCD
;Convertir a ASCII
; Digito Decenas
swapf NUM_BCD,w ; intercambio nibble inferior y superior. WREG = 0x43
andlw 0x0F ; borro nibble superior. WREG = 0x03
addlw .48 ; Ahora si le sumo 48dec --> WREG = "3"
movwf TEMP ; TEMP = 3 en ASCII o 51dec.
; Aca se hace lo que uno desee con TEMP.
; Digito Unidades
movf NUM_BCD,w
andlw 0x0F ; borro nibble superior. WREG = 0x04
addlw .48 ; Ahora si le sumo 48dec --> WREG = "4"
movwf TEMP ; TEMP = 4 en ASCII o 52dec.