Problema con contador, displays de 7 segmentos

Iniciado por dragonlady, 21 Junio 2015, 20:07 PM

0 Miembros y 1 Visitante están viendo este tema.

dragonlady

Buenas tardes a todos, estoy realizando un trabajito que debería ser sencillo en Ensamblador, que es con 2 displays de 7 segmentos, realizar un contador que cuente las pulsaciones de 0 a 99 y se reinicie. Bueno también tiene que poder contar para atrás, pero ni siquiera puedo hacer que cuente solo hasta 99.
Asumo que hay algún tema con basura o un error de algo que no me doy cuenta como identificar, ya que cuenta hasta 10 y después muestra unos símbolos raros que no llegan a ser números. Después sigue contando hasta 20 y se repite lo mismo cada vez que termina la decena. Muestro un vídeo para que sea más claro de visualizar:

[youtube=640,360]https://www.youtube.com/watch?v=mSRi2kY24Jc&feature=youtu.be[/youtube]

Código (asm) [Seleccionar]

processor 16f84
include   <p16f84.inc>
__config  _XT_OSC & _WDT_OFF & _PWRTE_ON


J equ H'20'  
K equ H'21'


org 0  

inicio: movlw B'00000000'
tris PORTB ; bits del puerto B son salidas
movlw B'00000000' ; w := 00000000
movwf PORTB ; inicializa port B =0
increment: incf PORTB,F
call retro
goto increment

; RETRASO

retro: movlw D'400' ; w := 200 decimal
movwf J ; J := w
jloop: movwf K ; K := w
kloop: decfsz K,f ; K = K-1, salta siguiente si es cero
goto kloop
decfsz J,f ; J = J-1, salta al siguiente si es cero
goto jloop
return

end


Está hecho y probado en Proteus 8. Cualquier idea y/o ayuda de que puede estar pasando (que probamos cambiarle varias cosas ya, pero ese error persiste) la agradezco desde ya.