Estuve revisando tu código y estás habilitando todo el puerto A como entradas analógicas. podrias hacer tu menú de esta forma:
#include <16f873a.h>
#device adc=10
#include <stdio.h>
#include <stdlib.h>
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA0 PIN_B4
#define LCD_DATA1 PIN_B5
#define LCD_DATA2 PIN_B6
#define LCD_DATA3 PIN_B7
#define PORTA 0x05
#use DELAY (CLOCK = 4M)
#include <LCD420.c>
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#DEFINE use_portb_lcd true
#define push0 PIN_a1
#define push1 PIN_a2
#define Push2 PIN_a3
#define pushterm PIN_a0
float temper;
float medicion;
#use standard_io(A)
enum funciones {Temp,acG,acT};
void temperatura(void){ //Función de medir
//algoritmo correspondiente
lcd_putc(" Termometro\n");
lcd_putc(" con LM35");
delay_ms(2000);
lcd_putc("\f");
lcd_putc("Temp actual\n");
lcd_putc(" ");
delay_ms(1000);
lcd_gotoxy(1,2);
lcd_putc("oC");
lcd_gotoxy(8,2);
delay_us (20);
medicion=read_adc ();
temper=medicion*(0.48875);
printf(lcd_putc,"%02.1f",temper);
delay_ms (700);
}
void activarGuante(void){ //Función de calibrar
//algoritmo correspondiente
}
void activarTeclado(void){ //Función de inicializar
//algoritmo correspondiente
}
void run_func(int numfunc){ //Asignación de la función a realizar
//viene dada por la variable "item"
switch(numfunc) {
case Temp:
temperatura();
break;
case acG:
activarGuante();
break;
case acT:
activarTeclado();
break;
}
}
void main() {
set_tris_a(0xff);
setup_adc (adc_clock_internal);
//setup_adc_ports (all_analog);
setup_adc_ports(AN0);
set_adc_channel (0);
char item; //Variables de funciones
char n_menus = 3; //Número de funciones
lcd_init();
lcd_gotoxy(1,1);
printf (lcd_putc,"Bienvenido a");
delay_ms(1000);
lcd_gotoxy(4,2);
printf (lcd_putc,"GUTRASE");
delay_ms(3000);
printf(LCD_PUTC, "\f");
int i;
for (i=1;i<=16;++i)
{
lcd_gotoxy(1,1);
printf(LCD_PUTC, "vinculando ..(%02i)",i);
lcd_gotoxy(i,2);
printf(LCD_PUTC, "*");
delay_ms( 500 );
}
printf(LCD_PUTC, "\f");
lcd_gotoxy(6,1);
printf (lcd_putc,"MENU");
delay_ms(1000);
printf(LCD_PUTC, "\f");
lcd_gotoxy(1,1);
printf (lcd_putc,"SELECCIONE OPC.");
lcd_gotoxy(1,2);
printf (lcd_putc,"1-cambia_OPC");
delay_ms(2000);
printf(LCD_PUTC, "\f");
lcd_gotoxy(1,1);
printf (lcd_putc,"2-enter");
lcd_gotoxy(1,2);
delay_ms(3000);
while (1) {
if (input(push0) == 1) { //Detecta botón de selección
item++; //Si pulsa aumenta la variable
delay_ms(300); //Para evitar rebotes
lcd_putc('\f'); }
if (item > (n_menus-1)) { //Si la variable supera el número de...
item = 0; } //funciones la inicializa
switch (item) {
case 0:
lcd_gotoxy(1,1);
printf(lcd_putc, "temperatura");
lcd_gotoxy(1,1);
break;
case 1:
printf(lcd_putc, "activarGuante");
lcd_gotoxy(1,1);
break;
case 2:
printf(lcd_putc, "activarTeclado");
lcd_gotoxy(1,1);
break;
}
if (input(push1) == 1) //Si se pulsa el botón de selección
{delay_ms(200);
run_func(item);} //se llama a la función correspondiente
}
}