Hola amigos de todopic, bueno creo debi haber echo esto desde hace mucho...preguntar a los expertos
.
Estoy aprendiendo a programar pics en C , y se me ha metido la idea de controlarlo mediante el puerto serial, realize un programa en VBasic (muy basico, igual estoy aprendiendo
) el cual envia la informacion,me referire a el como vSerial, y he implementado este programa en mi pic (ver codigo), pero el problema es que el LED solo enciende la primera vez y siendo el primer dato 's', y me gustaria que constantemente este leyendo los bits de entrada aun asi la cadena de caracteres de entrada sea 'sasw900s0kio' solo quiero que el LED encienda en las 's' y en los casos contrarios se apague, pero no lo, solo lee el primer dato.
Intente asignandole a la variable el valor de ' ' pero aun asi no funciono y no se si existe alguna manera de borrar los datos de entrada del serial (un reset de programa) y asi leyese el siguiente bit que envie. Espero haberme explicado
, y puedan ayudarme, les agradezco de antemano, adjunto la simulacion en proteus. Gracias.
/*------------------------------------------------------------*/
/* */
/* Comunicacion Serial PC->PIC */
/* */
/*------------------------------------------------------------*/
#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8)
//Config. de Puertos
#byte PORTA=0x05
#byte PORTB=0x06
void main()
{
char seleccion;
set_tris_a(0x02);
set_tris_b(0x00);
port_b_pullups(true);
Output_Low(PIN_B0);
seleccion = getch(); //El valor de entrada se almacena en seleccion
switch(seleccion)
{
case 's':Output_High(PIN_B0); break; //Si la entrada es 's' encender el LED
default: Output_Low(PIN_B0); //En caso contrario el LED se apagara
}
}