Muy buenas, estoy intentando hacer un simple contador que he explicado en otro post, el caso es que he vuelto a quedarme atascado, He conseguido que el contador ascienda desde 0, pero cuando llega a 10 empieza hacer cosas raras, llega hasta 15 y sin motivo que yo sepa vuelve otra vez a 0 El problema esta en la subrutina que separa las decenas de las unidades para mostrar cada una por un display, si el numero es menor de 10 lo muestra correctamente pero cuando es mayor empieza a poner cosas raras por ejemplo si le digo que muestre el numero 23 me saca el 07
Os pongo el codigo de esta subrutina a ver si le veis algo raro porque yo estoy saturado y no se que mas hacerle
Un saludo y gracias por este magnifico foro!
Os pongo el codigo de esta subrutina a ver si le veis algo raro porque yo estoy saturado y no se que mas hacerle
Código:
BIN_BCD
clrf Display1 ; Pone a 0 las decenas
clrf Display2 ; Pone a 0 las unidades
movwf Display2 ; Copia el numero a convertir en las unidades
EXTRAE_DECENAS
movlw .10
subwf Display2,W ; Resta 10 a las unidades
btfss STATUS,C ; Comprueba si el resultado es menor de 10
return ; En ese caso retorna al principal sin modificar nada
movlw b'10000000' ; Enciende un led para comprobar si a entrado en esta parte de codigo
movwf PORTC
incf Display1,F ; Incrementa las decenas
movlw .10 ; Resta 10 a las unidades
subwf Display2,F
goto EXTRAE_DECENAS
Última edición: