Es seguro que tienes ruido en la alimentación causado por algo que está antes del divisor de tensión ...
Si estás con una fuente ... prueba con una pila ...
Si tienes algun LED, desenchúfalo ...
Ponle al Micro un condensador de 100 microfaradios entre el Vcc y Vdd ...
Si estás en una protoboard, revisa las conexiones ... un cable que no haga buen contacto, puede causar estragos ...
ETC ...
Por si fuera un tema de Soft, aquí tienes una prueba básica para verificar el funcionamiento de AD0 ... incluyendo la pausa a la que hace referencia MGL ...
Codigo:
#include "16F870.h"
#device adc=10
#fuses NOWDT,XT, PUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=4000000)
#include <LCD.C>
void main()
{
long valorAD, cuenta;
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_DIV_32);
setup_spi(FALSE);
setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
cuenta = 0;
lcd_init();
lcd_putc("fPrueba AD0");
delay_ms(2000);
cuenta = 0;
while(1)
{
set_adc_channel(0);
delay_ms(25);
valorAD = Read_ADC();
printf(lcd_putc, "fAD0=%lu
%lu ", valorAD, cuenta);
delay_ms(100);
cuenta ++;
}
}