//Seguidor de linea.

#include <16F84A.h>
#fuses HS,NOWDT
#use fast_io(a)
#use fast_io(b)
#use standard_IO(a,b)
#use delay(clock=20000000)

// Toda las definiciones de variables

#define sensorizquierda pin_b0
#define sensorcentral pin_b1
#define sensorderecha pin_b2
#define puestamarcha pin_b3

#define	md pin_a0
#define mi pin_a1
#define md2 pin_a2
#define mi2 pin_a3

int8	lectura_port,sensores,marcha;

void adelante(void);
void retrocede (void);
void derecha (void);
void izquierda (void);
void stop (void);

void main (void)
{
	set_tris_b(0xff);
	set_tris_a(0x00);
	marcha=puestamarcha;
	while(marcha==1)
	{
		sensores=input_b()&0x07;
		switch(sensores)
		{
		case 0:
		retrocede();
		break;

		case 1:
		derecha();
		break;

		case 2:
		adelante();
		break;

		case 3:
		derecha();
		break;

		case 4:
		izquierda();
		break;

		case 5:
		derecha();
		break;

		case 6:
		izquierda();
		break;

		case 7:
		adelante();
		break;
		}
	}
}

void adelante(void)
{
	output_high(md);
	output_low(md2);
	output_high(mi);
	output_low(mi2);
}
void retrocede (void)
{
	output_high(md2);
	output_low(md);
	output_high(mi2);
	output_low(mi);
}
void derecha (void)
{
	output_high(md2);
	output_low(md);
	output_high(mi);
	output_low(mi2);	
}
void izquierda (void)
{
	output_high(md);
	output_low(md2);
	output_high(mi2);
	output_low(mi);
}
void stop (void)
{
	output_low(md);
	output_low(mi);
	output_low(md2);
	output_low(mi2);
}