	LIST	P=16F84A
	INCLUDE	"P16F84A.INC"
	RADIX	HEX
	ORG	0
	GOTO	CONF
	ORG	5
CONF:
	BSF	STATUS,5	;NOS LLEVA AL BANCO 1 PARA CONFIGURAR
	MUVLW	B'00011111'	;INDICA LAS 5 ENTRADAS DE LOS SENSORES PUERTO B ENTRADA CON UN 1 QUE LE PONEMOS
	MOVWF	PORTA		;INDICA QUE VA A MANDAR A PUERTO A
	CLRF	PORTB		;INDICA QUE SERAN SALIDAS ADEMAS VA A SER BORRADO TODO LO QUE OCUPEMOS
	BCF	STATUS,5	;PONE A 0 EL BANCO 0 Y REGRESA AL BANCO 0
LIMPIA_PUERTO:
	CLRF	PORTB		;BORRA TODO EN EL PUERTO B
VERIFICA_L:
	BTFSS	PORTA,2		;VERIFICA QUE EL PUERTO B EN EL BIT 2 EXISTE UN UNO 
	GOTO	VERIFICA_L	;SI NO EXISTE UN 1 EN EL PUERTO BANCO 2 REGRESA A VERIFICA_L
	MOVLW	B'00000101'	;AVANZA N LOS MOROTORES 
DET_P:
	BTFSC	PORTA,2		;VERIFICA Y SALTA SI HAY UN 0 EN EL PUERTO B EN EL BIT 2 
	GOTO	DEC_ID		;VA HACIA DEC_ID
	GOTO 	DETENER	;SI YA SALTO DESDE EL "BTFSSC ANTERIOR" SE VA A DETENER
DEC_ID:
	BTFSSC	PORTA,1		;SALTA SI HAY UN 0 EN EL PUERTO A EN EL BIT 1
	GOTO	G_DER		;VA A IR A LA ETIQUETA G_DER SI HAY UN 1
	BTFSC	PORTA,3		;SALTA SI HAY UN 0 EN EL PUERTO A EN EL BIT 3
	GOTO	G_IZQ		;VA A IR A LA ETIQUETA G_IZQ SI HAY UN 1
	GOTO	DET_P		;VA  A IR A LA ETIQUETA DET_P PARA SI SE VA A DETENER O NO
DETENER:
	CLRF	PORTB		;DETIENE EL COCHECITO
	GOTO	VRIFICA_L	;VUELVE A IR A LA LINEA
G_IZQ:
	MOVLW	B'00000100'	;ENVIA UN 1 AL BIT
	BTFSC	PORTA,3		;VERIFICA SI HAY UN O EN EL PUERTO A EN EL BIT 3
	GOTO	G_IZQ		;VUELVE A REPETIR EL PROCEDIMIENTO
	GOTO	VERIFICA_L	;SI YA SALTO ENTONCES VA A REGRESAR A VERIFICAR SI HAY LINEA
G_DER:
	MOVLW	B'00000001'	;ENVIA UN 1 AL BIT
	BTFSC	PORTA,1		;VERIFICA SI HAY UN O EN EL PUERTO A EN EL BIT 3
	GOTO	G_DER		;VUELVE A REPETIR EL PROCEDIMIENTO
	GOTO	VERIFICA_L	;SI YA SALTO ENTONCES VA A REGRESAR A VERIFICAR SI HAY LINEA
	END   