Hola Amigos, llevo tiempo que intento que las variables que tengo estén funcionando continuamente, y que cuando pulse la tecla muestra la el valor de la variable de ese momento. El programa es el siguiente(tengo el pic18f4550 y cristal de 20MHz):
//Obtener Datos
void Obtenerdatos()
{
TEMPERATURA_MOTOR();
NIVEL_COMBUSTIBLE();
TACOMETRO();
}
void mostrar_variable_1(){
lcd_putc('\f');
lcd_gotoxy(1,1);
printf(lcd_putc, "TEMP = %04.1f ºC",TC);
}
void mostrar_variable_2(){
lcd_putc('\f');
printf(lcd_putc, "\fADC = %4ld", l);
printf(lcd_putc, "\nVoltage = %01.2fV", p);
}
void mostrar_variable_3(){
lcd_putc('\f');
lcd_gotoxy(1,1);
printf(lcd_putc,"RPM = %0f RPM",RPM);
lcd_gotoxy(1,2);
printf(lcd_putc,"Vel = %0f Km/h",VEL);
}
main(){
CONFIGURACIONES Y TAL
while(TRUE){
Obtenerdatos();
k=kbd_getc();
if (k!=0 & j!=k)
{
j=k;
}
else
{
j=0;
}
//Comprueba que la tecla presionada no sea la misma que se presiono la ultima vez
switch(Nivelmenu){
case 0:
switch (j){ //Menu principal
case '1':
Mostrar_menu_de_variables();
Nivelmenu=1;
break;
case '2':
EnviarDatos();
break;
default:
break;
}
break;
case 1: //Menu de variables, se muestran todas las variables para que se seleccione una
switch (j){
case '1':
Mostrar_menu_var();
variable=1;
Nivelmenu=2;
break;
case '2':
Mostrar_menu_var();
variable=2;
Nivelmenu=2;
break;
case '3':
Mostrar_menu_var();
variable=3;
Nivelmenu=2;
break;
case '4':
Mostrar_menu_var();
variable=4;
Nivelmenu=2;
break;
default:
break;
}
break;
case 2: // Menu de cada variable, todas tienen 2 opciones, obtener datos y salir al menu anterior
switch (variable){
case '1':
mostrar_variable_1();
break;
case '2':
mostrar_variable_2();
break;
case '3':
mostrar_variable_3();
break;
default:
break;
}
if (j=='#')
{
Mostrar_menu_de_variables();
Nivelmenu=1;
break;
}
break;
default: // Caso unico que por algun problema se llegue este punto, poniendo a 0 y el nivel y mostrando el menu inicial
Mostrar_menu_inicial();
Nivelmenu=0;
break;
}
}
El problema es que en el ultimo cuando pico para que me muestre una variable no entra, se queda como pillado en cambio si pulso a que vuelva atrás funciona correctamente. No entiendo a que es debido este problema.
Probé a quitar el Obtenerdatos() de dentro del while y del main, entonces me muestra el valor de la variable pero no se actualiza, es decir, muestra el valor del momento que has apretado la tecla.