TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Radiomendoza en 24 de Julio de 2009, 23:19:16
-
Saludos estimados, este es el problema que me he encontrado.
Al arrancar el programa tengo 5 segundos para poner la letra c para entrar al
modo configuracion, si no, se sale del loop y se llama a una rutina que ejecuta una
aplicacion.
El problema que tengo es que si pongo getc(), se queda tildado el loop esperando un
caracter y no sale nunca si no hago nada.
Aca esta el programa. Gracias por sus comentarios.
#include <16F628A.h>
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,BROWNOUT
#use delay (clock=20000000)
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)
void main(void)
{
int i;
char letra, resp;
printf("pulse c para configurar dentro de los 5 segundos");
for (i=1;i<=50;++i)
{
delay_ms (i);
switch(getc()) // se queda esperando
{
case 'c':
printf("\fEntrando en configuracion...");
delay_ms(200);
configurar();
break;
// un case para ir a escape() si no hago nada en 5 seg como hago?
}
}
printf("\ftiempo finalizado");
}
void configurar(void)
{
printf("\fLISTO PARA CONFIGURACION");
}
void escape(void)
{
printf("\fESCAPO DE CONFIGURACION");
}
-
Asigna un timer para el conteo del tiempo. Si, al terminar el conteo, no llega caracter, activas un flag en el timer para que salga.
-
revisa esto kbhit en la ayuda de ccs , viene un ejemplo.
saludos
-
lo mejor es utilizar una interrupcion para la lectura de datos por el rs232 en el pin b0-int, y al pasar los 5 segundos se desactiva las interrupciones
-
El puerto de comunicaciones que voy a usar va a cumplir 2 funciones, una es de configuracion, conectandolo a un terminal, si pasan mas de 5 seg sin ingresar el caracter c entra en modo comunicacion rs232. Estuve viendo el kbhit pero si lo conecto por 232 a otro equipo, lo va a tomar como un caracter, por lo que podia hacer era usar el getc() y un timer interno para que no pueda ingresarse a la configuracion cuando me conecte a un equipo por rs232, que les parece?