Hola, he estado mirando las caraceristicas del conversor ADC, de la serie 16f y 18f, y son iguales, necesitan un tiempo Tad minimo de 1,6us, y cuando se usan los 10 bit del conversor, es necesario un tiempo igual a 12 Tad, para realizar la conversión.
Se me ocurre que la lectura del conversor la hagas en ensamblador, seria algo así:
#asm bcf PIR1, ADIF//restaura flag del conversor
bsf ADCON0, GO//inicia conversion
ADC_ESPERA:
btfss PIR1, ADIF//¿conversion fin?
goto ADC_ESPERA//NO, esperar
bsf STATUS, RP0//banco1
movf ADRESL, W//copia resultado bajo de la conversion
movwf S2_L //en S2_L
bcf STATUS, RP0//banco0
movf ADRESH, W//copia resultado alto de la conversion
movwf S2_H //en S2_H
#ENDASM
los registros S2_L, y S2_H contienen el resultado de la conversión, para juntarlos en el ccs como un long, habria que hacer algo así:
Voltaje=S2_H*256+S2_L;
No se si esto hará mas rápida la conversion.
Saludos.