#include <16F84a.h> //PIC
#fuses XT, NOPROTECT, NOPUT, NOWDT //configuracion
#use delay (clock=4000000) //frecuencia del cristal
#use fast_io(A)
#use fast_io(B)
// empieza el programa
void main()
{
short I1;
short I2;
set_tris_a(111111); //puertos A como entrada
set_tris_b(000000); //puertos b como salida
while (true)
{
I1=input(PIN_A0); //I1=RA0
I2=input(PIN_A1); //I2=RA1
if(I1==I2) //Si las dos entradas son iguales genera un pulso que mantiene el servo en la posicion central
{
output_bit(pin_b0,1); //activa RB0
delay_us(1500); //delay 1.5ms
output_bit(pin_b0,0); //desactiva RB0
delay_us(18500); //delay
}
else //si los valores de entrada son diferentes
{
if(I1<I2) //Si RA1 es 1 entonces RA0 es 0 (RA0<RA1) por tanto, gira a la derecha
{
output_bit(pin_b0,1);
delay_us(2200);
output_bit(pin_b0,0);
delay_us(17800);
}
else // Si RA1 es 0 y RA0 es 1 (RA0>RA1) dira a la izquierda
{
output_bit(pin_b0,1);
delay_us(200);
output_bit(pin_b0,0);
delay_us(19800);
}
}
}}