Hola a todos, tengo un proyecto el cual con el pic16f84a se tiene que controlar las grados de un servomotor (sg90) a Rb0. Explico: con 2 pulsadores conectados a ra0 y ra1 se tiene que manipular los grados (ya sea un pulsador para mas grados y el otro para menos).
Hice este código que tiene una parte de lo que necesito por que solo tengo un pulsador a ra0, pero no funciona, (no soy muy bueno en esto
)
# include <16F84A.h>
# use delay(clock=4000000)
# fuses XT,NOWDT
# byte puerto_b=06
# byte puerto_a=05
int contador=0,estado=1;
void main() {
set_tris_b(0x00);
set_tris_a(0x1F);
puerto_b=0;
if (input(pin_a0)) estado=0; //Si se pulsa.
if (estado==0 && (input(pin_a0))) { //Si se pulsa y se libera.
contador++;
if (contador>4) contador=1;
estado=1;
}
switch (contador){
case 1:{output_high(PIN_B0);
delay_us(1499); //1.500us (neutral)
output_low(PIN_B0);
delay_us(8500);
break;}
case 2:{output_high(PIN_B0);
delay_us (1949); //1.950us (-45 grados)
output_low(PIN_B0);
delay_us(18050);
break;}
case 3:{output_high(PIN_B0);
Delay_us(1049); //1.050us (+45 grados)
output_low(PIN_B0);
Delay_us(18950);
break;}
case 4:{output_high(PIN_B0);
Delay_us(599); //600us (+90 grados)
output_low(PIN_B0);
Delay_us(19400);
break;}
}
}
Agradeceré cualquier ayuda.
Saludos