* ----------------------------------------------------------------------- * encoder.asm * ----------------------------------------------------------------------- PORTA EQU $0 ; Puerto A TCTL2 EQU $21 ; Activaciones de flancos ICn TMSK1 EQU $22 ; Interrupciones de capturadores TFLG1 EQU $23 ; Flags de capturadores ORG $0000 ; Programa en RAM interna BRA inicio pasos_d FDB 0 ; Variable para contar los pasos inicio LDX #$1000 ; Apunta a los registros de ctrl BSR init ; Inicializa interrupciones avanza LDAA #$18 ; Avanza STAA PORTA,X bucle LDD pasos_d ; Carga los pasos de la rueda derecha CPD #8 ; Lo compara con 8 BNE bucle ; Si no se ha lledado, continua CLRA ; Detiene el robot STAA PORTA,X stop BRA stop ; Y se para h_enc_d LDD pasos_d ; Carga el número de pasos ADDD #$01 ; Incrementa en 1 STD pasos_d ; Almacena el número de pasos LDAA #$01 ; Borra el flag de interrupción IC3 STAA TFLG1,X RTI ; Retorno de interrupción init BCLR TCTL2,X $02 ; Flanco de subida del IC3 BSET TCTL2,X $01 ; Flanco de subida del IC3 BSET TMSK1,X $01 ; Permite interrupciones del IC3 CLI ; Permite interrupciones RTS ORG $00E2 ; Instala el manejador JMP h_enc_d END