Es muy dificil, trabajar con el ADC es unicamente para gente que lee el datasheet, mentiras
, pero si, la costumbre de microchip de ponerte una receta para iniciar un modulo esta como siempre en el datasheet:
Del datasheet que te dice paso a paso como hacerlo...
1. Configure the A/D module:
Configure analog pins/voltage reference and digital I/O (ADCON1)
Select A/D input channel (ADCON0)
Select A/D conversion clock (ADCON0)
Turn on A/D module (ADCON0)
2. Configure A/D interrupt (if desired):
Clear ADIF bit
Set ADIE bit
Set GIE bit
3. Wait the required acquisition time.
4. Start conversion: Set GO/DONE bit (ADCON0)
5. Wait for A/D conversion to complete by either:
Polling for the GO/DONE bit to be cleared (with interrupts disabled);
OR
Waiting for the A/D interrupt
6. Read A/D Result register pair (ADRESH:ADRESL), clear bit ADIF if required.
7. For next conversion, go to step 1 or step 2 as required. The A/D conversion time per bit is defined as TAD. A minimum wait of 2 TAD is required before the next acquisition starts.
int ResultadoADC; //16 bits si no me equivoco
// Paso 1 , Aca lo hice todo junto pero podes hacerlo bit por bit
ADCON1 = 0x8E; //AN0 solo habilitado (tenes una tabla en el datasheet), los demas digitales, justificado derecha.
ADCON0 = 0xC1; // Canal AN0 , Seleccione reloj RC interno que posee el ADC y activo el ADC poniendo 1 en el bit ADON
// Paso 2
// No uso interrupciones, asi que no tengo que activar las interrupciones del ADC
// Paso 3
_delay_us(15); // el TAD del FRC puede ir de 4 a 6 us segun el datasheet. Se necesita esperar 2 TAD, asi que puse 15 us
// Paso 4
ADCON0bits.GO = 1
//Paso 5 por que no uso interrupciones espero que termine aca, sino activaria y cuando se produzca la interrupcion significa que ya esta listo.
while(ADCON0bits.GO); // Cuando se pone a 0 es por que termino
// Paso 6, guardo el resultado
ResultadoADC = (ADRESH << 8);
ResultadoADC += ADRESL;
//Paso 7
// Si necesito hacer lo de nuevo repito los pasos 3,4,5 y 6
Lo llene de comentarios, para que veas lo facil que era, siguiendo los pasos del datasheet. pero si observas son solo 2 lineas de configuracion (a lo sumo 2 mas si usas interrupciones) + 5 lineas que lleva el ADC