Hola Tempus, de momento coloco lo que te mencioné por privado, para que quizá a alguien mas pueda servirle, aumento algunas cosas para que sea más entendible y lo ordeno mejor.
Veo que falta que definas el canal que leerás:
SET_ADC_CHANNEL(x); //donde x es el canal, 0 AN0, 1 AN1, etc
delay_us(20); // retardo de captura de datos, no estoy seguro del nombre, pero es necesario muchas veces
estas dos lineas puedes colocarlas en la inicialización del micro, antes del bucle de trabajo. En caso que uses 2 ó más canales esas dos lineas siempre irán antes de leer el canal
Si solo usarás un pin como analógico no veo para que uses ALL_ANALOG, puedes usar solo AN0, u otra combinación mejor:
setup_adc_ports(AN0);
Quizá puedas usar VREF para que puedas limitar el rango de tensión de lectura y sea más preciso con el LM35 que creo que no varia máximo hasta 2V aproximadamente, de esta manera obtendrás una mejor lectura:
setup_adc_ports(AN0_AN1_VSS_VREF);
También van en las configuraciones del micro mejores detalles de configuraciones lo puedes ver en el mismo archivo .h del pic correspondiente en la carpeta devices donde esta instalado en compilador; o mejor en la hoja de datos del micro.
Vref hace referencia al pin VREF+ del micro, que en tu caso sería RA3 y VSS a VREF- (RA2), en este caso significa que RA2 estará conectado a tierra, y RA3 mediante un divisor resistivo, que es lo más cómodo y fácil (en función a la tensión que el LM35 pueda brindar), determinará el valor máximo que se podrá leer en el pin análogo (AN0 en este caso), cualquier valor superior leído en AN0 a la Tensión de Referencia (en RA3) tendrá un resultado por ejemplo en 8 bits de 255.
Como podrás ver todo ello trabaja en el puerto A, en su mayoría; tu tienes el mismo usado con los pulsadores, creo que sería bueno que muevas los pulsadores a otros pines, o si solo quieres trabajas con un PIN analógico es muy importante que los otros estén como digitales, si usas ese hard y la sentencia all_analog ya hay un conflicto, porque los pulsadores son entradas digitales
También se te olvidó definir el "ancho" en bits del resultado de la conversión, que va en la cabecera del código, después del include del pic:
#device adc=8 => tu variable donde guardas el resultado debe ser de 8bits
ó
#device adc=10 => variable donde guardas el resultado debe ser de 16bit
En la visualización puedes mejor usar dentro las comillas caracteres especiales que borran todo y saltan linea, ejemplo:
printf(lcd_putc,"\fValor leído\nTemp=%f",AD_leido);
lo que dará en el LCD, por ejemplo si AD_leido=20.2
Valor leído
Temp=20.2
\f limpiar pantalla
\n salto a segunda línea
\b recorre el cursor una posición a la izquierda
\r en LCD2.c no existe a menos que tu le des una función manualmente, modificando la librería, o que este defino en la librería que tienes, personalmente tengo una librería llamada lcd2.c que funciona a 8 bits y no a 4 como se muestra en tu esquemático
Con eso podrás colocar todo lo que necesitas en solo una línea de código, quizá a expensas de algo de uso extra de memoria de programa, que generalmente no afecta a micros relativamente espaciosos en FLASH
Una última cosa en tu esquema de proteus, si es que vas a simular, define también la frecuencia a la que trabajará el micro en sus propiedades, donde le das la dirección del .cof o el .hex
Espero que tengas buenos resultados con las primeras pruebas.
Un saludo paisano, que te vaya muy bien