Hola!, muy buenas tardes a todos.
Estoy desarrollando un proyecto con el PIC 16F877a y con un módulo Bluetooth con el que quiero controlar un motor a pasos que de vuelta constantemente el código es el siguiente:
#include <16F877A.h>
#fuses XT,NOWDT,NOCPD,NOLVP,NOWRT,PUT,NODEBUG,NOPROTECT,NOBROWNOUT
#use delay (clock = 4000000)
#use fast_io(C)
#use RS232 (BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7)
char valor;
void main ()
{
set_tris_d(0);
output_d(0);
while (TRUE)
{
valor = getc();
if( valor == 'F')
{
do{
output_d(9);
delay_ms(5);
output_d(3);
delay_ms(5);
output_d(6);
delay_ms(5);
output_d(12);
delay_ms(5);
}while(valor == 'F');
}
if(valor == 'B')
{
output_d(12);
delay_ms(5);
output_d(6);
delay_ms(5);
output_d(3);
delay_ms(5);
output_d(9);
delay_ms(5);
}
if(valor == 'S')
{
output_d(0);
}
}
}
El problema es el siguiente, obviamente hay un ciclo Do - While el cual mantiene el motor a pasos dando vuelta constantemente, este ciclo se activa al mandar la letra F al Bluetooth desde una App de Android, esta App es un control con flechas hacia adelante, atrás, lados y un botón central que funciona mandando S para detener el motor, mi problema llega cuando al mandar F se activa el ciclo pero no puedo interrumpir el ciclo mandando otra letra desde el control, o sea, el programa sólo funciona una vez porque se queda atorado en el ciclo, ¿podrían explicarme cómo puedo interrumpir el ciclo mandando otra letra desde el control?
como ya mencioné estoy usando un PIC 16F877A, un módulo Bluetooth HC-06 y la App la desarrollé en MIT App Inventor 2.
Gracias de antemano.