Problemas al programar un pic para cajonero automatizado.

Estoy programando un PIC16F84A para un cajonero automatizado que se abra y cierre sólo,
nada más que tengo un problema, es_que no sé como hacer que el programa cuando este en 1 y cambie a 0,
haga una rutina para activar la otra pata del puente h, y así avance el motor al_revés.
Esto es lo que llevo del programa.
Código:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Programa 2 entradas (motores)                    ;
;          4 salidas                             ;
;                                                ;
;Segundo motor encender leds.                    ;
;                                                ;
;                                                ;
;                                                ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    __CONFIG H'3FF9'
    
;configuracion de variables
STATUS        equ 03h
TRISA        equ 85h
TRISB        equ 86h
PORTA        equ 05h
PORTB        equ 06h
CUENTA1        equ    10h
CUENTA2        equ    20h
CUENTA3        equ    30h
CUENTA4        equ    40h

;Configuracion del puerto A
    BSF        STATUS, 5
    MOVLW    03h
    MOVWF    TRISA
    BCF        STATUS, 5
    
;Configuracion del puerto B
    BSF        STATUS,5
    MOVLW    00h
    MOVWF    TRISB
    BCF        STATUS,5
    
;Inicio
INICIO    BTFSC    PORTA,0
        CALL    PARTE1
        BTFSC    PORTA,1
        CALL    PARTE2
        GOTO    DEVOLVER

REVISION    BTFSC    PORTA,0
            GOTO    INICIO
            GOTO    REVISION

;;;;;SUBRUTINAS
;;;ENCENDIDO Y APAGADO DE MOTORES
;SWITCH 1
PARTE1        MOVLW    b'01100'
            MOVWF    PORTA
            CALL    RETARDO
            MOVLW    b'00100'
            MOVWF    PORTA
            RETURN
;SWITCH 2
PARTE2        MOVLW    01h    ;INICIO PRIMER MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB
            MOVLW    02h ;INICIO SEGUNDO MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    04h    ;INICIO TERCER MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB
            CALL    RETARDO2
            MOVLW    08h    ;INICIO CUARTO MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB
            CALL    RETARDO3
            RETURN

;;;RETARDOS
RETARDO        DECFSZ    CUENTA1,1
            GOTO    RETARDO
            DECFSZ    CUENTA2,1
            GOTO    RETARDO
            RETURN

RETARDO2    DECFSZ    CUENTA1,1
            GOTO    RETARDO2
            DECFSZ    CUENTA2,1
            GOTO    RETARDO2
            DECFSZ    CUENTA3,1
            GOTO    RETARDO2
            RETURN

RETARDO3    DECFSZ    CUENTA1,1
            GOTO    RETARDO3
            DECFSZ    CUENTA2,1
            GOTO    RETARDO3
            DECFSZ    CUENTA3,1
            GOTO    RETARDO3
            DECFSZ    CUENTA4,1
            GOTO    RETARDO3
            RETURN

;;;REGRESAR CAJONES
DEVOLVER    MOVLW    10h    ;INICIO PRIMER MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB
            MOVLW    20h ;INICIO SEGUNDO MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB        
            MOVLW    40h    ;INICIO TERCER MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB
            MOVLW    80h    ;INICIO CUARTO MOTOR
            MOVWF    PORTB
            CALL    RETARDO
            MOVLW    00h
            MOVWF    PORTB
            GOTO    REVISION

    END
 
Última edición por un moderador:
men pon mas datos de lo que quieres hacer, por ejemplo como funciona el cajonero o que es lo que va ha hacer porque queda dificil ayurte sin saber que es
 
El cajonero funciona primero cuando en la segunda entrada le llega un 1 se abren los cajones de uno por 1 son 4 y despues que cuando mande un 0 se active una subrutina que haga que los motores de los cajones den en sentido contrario haciendo que se cierre el cajonero
 
Atrás
Arriba