Contador hace cosas raras al pasar de 9

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 :eek: 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 :confused:

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
Un saludo y gracias por este magnifico foro!
 
Última edición:
Bueno como no consigo arreglarlo, he quitado todas las subrutinas y he dejado solo que el contador se incremente y que se vea por el puerto C conectado a 8 leds para ver sus salidas y resulta que no pasa de 16, cuando los leds llegan a la configuracion 00001111 el registro pasa a valer 0 pero yo no le he puesto ninguna instruccion para que lo haga... y la cuenta vuelve a empezar desde 0 y cuando llega a 00001111 vuelve a reiniciarse :eek:


Alguna idea?
 
Atrás
Arriba