Hola a Todos
Pues, hace ya un rato postee un programa para mandar secuencias de encendido de leds controlados por visual. Pues bien, me surgio el siguiente problema y es que en ocasiones el PIC hace todo a la perfección, le fijo una frecuencia y despues oprimo el botón adelante y lo hace. Así también si oprimo el botón de retroceder. Bueno pues en muchas ocasiones como que el micro deja de responder y lo hace hasta que lo reseteo. Mi pregunta es si existe alguna forma de corregir eso. De antemano muchas gracias.
Codigo:
#include <16f874A.h>
#fuses HS, NOPROTECT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
char opcion;
long duty,per;
izq()
{
output_b(5);
delay_ms(per);
output_b(9);
delay_ms(per);
output_b(10);
delay_ms(per);
output_b(6);
delay_ms(per);
}
der()
{
output_b(6);
delay_ms(per);
output_b(10);
delay_ms(per);
output_b(9);
delay_ms(per);
output_b(5);
delay_ms(per);
}
detener()
{
output_b(0);
}
main()
{
set_tris_b(0x00);
output_b(0);
while (TRUE)
{
opcion=getc();
switch (opcion)
{
case "1":
while(!kbhit());
duty=getc();
per=(100*duty)/4;
do
izq();
while (!kbhit());
break;
case "2":
while(!kbhit());
duty=getc();
per=(100*duty)/4;
do
der();
while (!kbhit());
break;
case "3":
do
detener();
while (!kbhit());
break;
}
}
}
Cabe señalar que los valores de duty estan entre 30 y 3.