Hola jfmateos aqui dejo el codigo, veré como dejo el esquema:
;----------------------------------------------------------
List p=16F84
;----------------------------------------------------------
;cabecera standar
;----------------------------------------------------------
PORTA EQU 5
PORTB EQU 6
TRISA EQU 5
TRISB EQU 6
STATUS EQU 3
INTCON EQU 0x0B
TMR0 EQU 1
OPTION_R EQU 1
W EQU 0
F EQU 1
SENTI EQU 0x0C ;sentido del giro 01 o 10 RB1,RB2
;-----------------------------------------------------------
;zona reset
;-----------------------------------------------------------
ORG 0
GOTO INIC
ORG 5
;-----------------------------------------------------------
;configura PORTB de salida y PORTA de entrada
;-----------------------------------------------------------
INIC BSF STATUS,5 ;bit 5 de STATUS a 1=banco 1
CLRF TRISB ;PORTB de salida
MOVLW b'00000011' ;PORTA de entrada
MOVWF TRISA ;RA0,RA1 entradas, resto salidas
BCF STATUS,5 ;banco 0
;------------------------------------------------------------
;;Habilito el driver L293B sacando 1 por RB3
;;------------------------------------------------------------
MOVLW b'00001010' ;habilito L293B RB3=1 y avanza
MOVWF SENTI ;avanza: RB2=0 RB1=1
CALL MUEVE
;;------------------------------------------------------------
;bucle infinito testeando RA0 y RA1
;------------------------------------------------------------
TESTA BTFSS PORTA,0 ;choco por alante ? (RA0 choque delantero 1=si 0=no)
GOTO TESTB
;CALL PAUSA ;no se usa
BAJA_A BTFSC PORTA,0
GOTO BAJA_A
CALL CHG
TESTB BTFSS PORTA,1 ;choco por atras ?
GOTO TESTA
;CALL PAUSA
BAJA_B BTFSC PORTA,1
GOTO BAJA_B
CALL CHG
GOTO TESTA
CHG MOVF SENTI,0
XORLW b'00000110' ;cambio sentido
MOVWF SENTI
CALL MUEVE
RETURN
MUEVE MOVF SENTI,0 ;W
MOVWF PORTB
RETURN
PAUSA
;-------- pausa 40ms ----
MOVLW .100
MOVWF TMR0
BSF STATUS,5 ;banco 1
MOVLW b'00000111' ; prescaler 256*156=39936 us
MOVWF OPTION_R
BCF STATUS,5 ;banco 0
DESBO BTFSS INTCON,2
GOTO DESBO
BCF INTCON,2 ;restablezco flag
RETURN
;------------------
END