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]
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.