¿Qué tiene mal este código si al debuggear está todo bien?

Buen día,

Tengo este código,
Código:
mainLoop:
             MOV    #$FF, PTBDD      ; Se limpia puerto B
            INC    PTBD             ; Se carga uno al puerto B
            
            

COMPARA:    
            LDA    PTBD          ; Se mueve el Puerto B a A
            CMP    #$80 
            BLO    IZQ       
            CBEQA  #$01, COMPARA2                        
            
            
COMPARA2:   LDA    PTBD
            CMP    #$01
            BHI    DER
            CBEQA  #$80, A1
            
A1:         CBEQA  #$01, RUT2

 
 IZQ:       LSL    PTBD              ;Rota el valor de Pto B
            LDA    PTBD
            
            BRA    COMPARA
            
              
            
 DER:       LSR    PTBD
            LDA    PTBD
            
            BRA    COMPARA2

;INICIA SECUENCIA ASCENDENTE/DESCENDENTE

RUT2:       BRSET  1, PTBD, CLEARB1
SET1:       BSET   1, PTBD
            
            
            BRSET  2, PTBD, CLEARB2
SET2:       BSET   2, PTBD
            
 
            BRSET  3, PTBD, CLEARB3
SET3:       BSET   3, PTBD        
            

            BRSET  4, PTBD, CLEARB4
SET4:       BSET   4, PTBD
            

            BRSET  5, PTBD, CLEARB5
SET5:       BSET   5, PTBD
            

            BRSET  6, PTBD, CLEARB6
SET6:       BSET   6, PTBD
            

            BRSET  7, PTBD, CLEARB7
SET7:       BSET   7, PTBD        
            
CLEARB7:    BCLR   7, PTBD
            
CLEARB6:    BCLR   6, PTBD
            
CLEARB5:    BCLR   5, PTBD
            
CLEARB4:    BCLR   4, PTBD
            
CLEARB3:    BCLR   3, PTBD
            
CLEARB2:    BCLR   2, PTBD
            
CLEARB1:    BCLR   1, PTBD
            
CLEARB0:    BCLR   0, PTBD
            
            BRA    CENTRO
            
;COMIENZA RUTINA DE CENTRO HACIA AFUERA

CENTRO:     BRCLR  3, PTBD, CUATRO
CUATRO:     BRCLR  4, PTBD, SETB1
            
SETB1:      BSET   3, PTBD
            BSET   4, PTBD
            
            BRCLR   2, PTBD, CINCO
CINCO:      BRCLR   5, PTBD, SETB2

SETB2:      BSET   2, PTBD
            BSET   5, PTBD
            
            BRCLR   1, PTBD, SEIS
SEIS:       BRCLR   6, PTBD, SETB3

SETB3:      BSET   1, PTBD
            BSET   6, PTBD
            
            BRCLR   0, PTBD, SIETE
SIETE:      BRCLR   7, PTBD, SETB4

SETB4:      BSET   0, PTBD
            BSET   7, PTBD
            
            BRA    CLEARBITS1
            
;INICIA CICLO DE APAGADO DESDE CENTRO HACIA AFUERA

CLEARBITS1: BRSET  3, PTBD, CUATRO2       ;REVISAR SI ESTAN ENCENDIDOS
CUATRO2     BRSET  4, PTBD, CLEPAR4
            
CLEPAR4:    BCLR   3, PTBD           
            BCLR   4, PTBD
            
            
            BCLR   2, PTBD
            BCLR   5, PTBD
            
            
            BCLR   1, PTBD
            BCLR   6, PTBD
            
            
            BCLR   0, PTBD
            BCLR   7, PTBD
            
            
            BRA     AFUERA
            
; INICIA CICLO DE ENCENDIDO DESDE AFUERA HACIA ADENTRO

AFUERA:     BRCLR  0, PTBD, SIET
SIET:       BRCLR  7, PTBD, STBIT1

STBIT1:     BSET   0, PTBD
            BSET   7, PTBD
            
            BRCLR   1, PTBD, SEIS2
SEIS2:      BRCLR   6, PTBD, STBIT2

STBIT2:     BSET   1, PTBD
            BSET   6, PTBD
            
            BRCLR   2, PTBD, CINC
CINC:       BRCLR   5, PTBD, STBIT3

STBIT3:     BSET   2, PTBD
            BSET   5, PTBD
            
            BRCLR   3, PTBD, CUAT
CUAT:       BRCLR   4, PTBD, STBIT4

STBIT4:     BSET   3, PTBD
            BSET   4, PTBD
            
            BRA    CLEARBITS            
            
CLEARBITS:  BRSET  0, PTBD, SIETE2
SIETE2:     BRSET  7, PTBD, CLEARPAR1

CLEARPAR1:  BCLR   0, PTBD
            BCLR   7, PTBD   
            
CLEARPAR2:  BCLR   1, PTBD
            BCLR   6, PTBD                        
            
CLEARPAR3:  BCLR   2, PTBD
            BCLR   5, PTBD               
            
CLEARPAR4:  BCLR   3, PTBD
            BCLR   4, PTBD               
            
            JSR    mainLoop
            NOP

            JSR    mainLoop
que cuando debuggeo está todo bien, hace lo que quiero que haga (tres secuencias, LED's encienden de parecido al Knight Rider, luego ascendente a descendente y viceversa y luego del centro hacia afuera y viceversa) pero al momento de implementarlo no lo hace, sólo se quedan 4 LEDs en forma permanente y los otros 4 comienzan a encender intermitentemente, ¿qué está mal? intenté ponerle este delay pero sólo se quedan encendidos todos:

DELAY: MOV #$01, VAR1
LOOP2: MOV #$01, VAR2
LOOP1: DBNZ VAR2, LOOP1
DBNZ VAR1, LOOP2
RTS
Mil gracias
 
Última edición por un moderador:
Atrás
Arriba