;************************************************************************************
;									LINEA NEGRA
;
; 	Hace que el microbot se mueva siguiendo una trayectoria marcada en el suelo mediante
;te una línea negra a modo de pista.
;
;	Los sensores de reflexión situados en la parte inferior del PICBOT-1 se conectan
;a las entradas J0 y J1 (RB0 y RB1) y detectan el momento en que el PICBOT-1 sale de
;la línea de trayectoria bien por su izda. o por su dcha.
;
;							Autor: Mikel Etxebarria Isuskiza
;
;							(c) Microsystems Engineering
;								Bilbao, Enero de 1999
;

				LIST 	P=16C84			;Tipo de procesador
				LIST	C=132			;Nº de caracteres por línea
				LIST	N=66			;Nº de líneas por página
				
				include	"Regx84.inc"	;Definición de registros
				include "Macros.inc"	;Inclusión de macros
				
#DEFINE	J0			PORTB,0				;Sensor de posición 1
#DEFINE J1			PORTB,1				;Sensor de posición 2
#DEFINE J2			PORTB,2				;Sensor de obstáulo dcho.
#DEFINE J3			PORTB,3				;Sensor de obstáculo izdo.

				org		0x00
				goto	Reset			;Vector de RESET
				
				org		0x05
				
Reset:			clrf	PORTA
				bsf		STATUS,RP0		;Selección de página 1
				movlw	b'00010000'
				movwf	TRISA			;RA0-RA3 salidas, RA4 entrada
				movlw	b'11111111'
				movwf	TRISB			;RB0-RB3 entradas
				movlw	b'11110000'
				movwf	OPTION_REG		;RA4 clock del TMR0
				bcf		STATUS,RP0		;Página 0
				bcf		INTCON,GIE		;Interrupciones OFF
				
;Se espera a que se accione cualquier bumper delantero para iniciar la secuecia
				
;Wait			clrwdt
;				Stop					;Situación inicial de parada
;				btfss 	J2				;Sensor de obsáculo dcho. ON ??
;				goto	Loop			;Si, inicio
;				btfsc	J3				;Sensor de obstáculo izdo ON ??
;				goto 	Wait			;Si, inicio

;Bucle principal

Loop:			clrwdt									
;				btfss 	J2				;Sensor de obsáculo dcho. ON ??
;				goto	Parada			;Si, parada
;				btfsc	J3				;Sensor de obstáculo izdo ON ??	
;				goto 	No_Obstaculo	;No, arranque
;Parada			Stop					;Parar motores
;				goto	Loop
				
No_Obstaculo	btfsc	J1				;Ha salido por la izquierda ?
				goto	No_Izda			;No
				Dcha					;Si, movimiento a la derecha
				goto	Loop

No_Izda			btfsc	J0				;Ha salido por la derecha ?
				goto	No_Dcha			;No
				Izda					;Si, movimiento a la izquierda
				goto	Loop
				
No_Dcha			Adelante				;Avance del microbot
				goto	Loop

				end
				
