Hola compañeros soy nuevo en la programacion de microcontroladores quiero hacer un control de climatizacion pero tengo un problema en la programacion. Al inicio muestro un menu de dos opciones:
1. Mostrar Temperatura y 2. Cambiar rangos de Temperaturas, la seleccion la quiero hacer con el teclado 4x4 si aprieto 1 me ira a la funcion del sensor de temperatura, si aprieto 2 me ira a la funcion de cambiar rangos de temperatura. La seleccion ya mas o menos la tengo, pero cuando le doy la tecla 1 me muestra la temperatura y si aprieto la tecla 2 al instante se me va a la otra opcion, yo no quiero que pase eso, lo que quiero es que si apreté la tecla 1 se quede solo mostrando la temperatura a pesar de que apriete otra tecla del teclado y que despues de cierto tiempo me regrese al menu principal donde ahi pueda seleccionar otra opcion. En conlcusion mi duda es: como hago para que una vez que este en la funcion se quede enllavada en esa opcion sin hacerle caso a la tecla numero 2 del teclado????
Les agradeceria si me ayudaran, les adjunto el codigo y el ckto. Gracias
#include <16F877A.h>
#device adc=10
#FUSES NOWDT
#FUSES HS
#use delay (clock=4M)
#define LCD_ENABLE_PIN PIN_C0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#define use_portb_kbd TRUE
#include <lcd.c>
#include <kbd.c>
#include <stdlib.h>
void Sensor(void);
//!void Teclado();
int m;
void main(void)
{
char k;
port_b_pullups(TRUE);
setup_adc_ports(ALL_ANALOG);
SETUP_ADC(ADC_CLOCK_INTERNAL);
lcd_init();
kbd_init();
Inicio:
lcd_gotoxy(1,1);
lcd_putc("1. Mostrar Temperatura");
lcd_gotoxy(1,2);
lcd_putc("2. Cambiar Rangos de Temp");
delay_ms(300);
while(true)
{
k=kbd_getc();
if(k!=0)
{
if (k == '1')
{
Sensor();
}
if (k == '2')
{
//Teclado();
printf(lcd_putc,"%u",k);
}
}
}
}
void Sensor()
{
long val,val1,tem1,tem2;
set_adc_channel(0);
delay_ms(10);
val=READ_ADC();
tem1=val*0.488;
set_adc_channel(1);
delay_ms(10);
val1=READ_ADC();
tem2=val1*0.488;
if(tem1>tem2)
{
printf(lcd_putc,"\f tem = %Lu",tem1);
delay_ms(100);
}
else
{
printf(lcd_putc,"\f tem = -%Lu",tem2+1);
delay_ms(100);
}
}