Hay varias cosas que le están errando, primero que nada tener en cuenta los 20us para cargar el capacitor de sample&hold es para los PIC de la familia 16F, los 18F podemos configurar para que el tiempo de adquisición se realice automáticamente dependiendo del reloj de conversión, y el mínimo a esperar debe ser de 2.5 us.
La configuración del reloj de conversión también es importante, ya que no puede ser menor a 0.7us en un 18F, y como se utilizan 11TAD es sencillo determinar cuanto tiempo demora la conversión
Respecto a la interrupción creería que la forma correcta sería colocar read_adc(read_adc(ADC_START_ONLY); para iniciar la conversión, y en la interrupción capturar el valor con:
value=read_adc(ADC_READ_ONLY);
Saludos!