/*------------------------------------------------------------*/
/* */
/* 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
}
}
lo ideal es que uses una interrupcion para leer los datos desde el puerto serie, ya que como tienes tu programa ahora esstas leyendo siempre, aunque no tengas datos en el buffer.
:shock: El 16F84 no tiene módulo, aunque se puede aprovechar la interrupción externa de flanco descendente para capturar el bit de Start.
Luego tienes que quedar en un bucle infinito, sino se ejecuta una vez y el micro se resetea.
Saludos!
Código: C
while(1){ 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 } }
Si amigo, ya habia realizado eso, y viendo el debug si funciona pero el LED se apaga muy rapidamente, necesitaria enviar una cadena de sssssssssss continuamente para que el LED no se apague, creo sera la unica manera de hacerlo o cambiar el encendido al default y el apagado a la letra s.
Y envía letra por letra. También aprovecha la herramienta proteus, que te permite simular cargando el archivo *.cof paso a paso el código.
Saludos!