Pues si, mira, yo antes de probar otra cosa meteria unos retardos.
En efecto, cada vez que cambias el canal del conversor adc, debes esperar como minimo unos 13 us (segun viene en el manual), aunque no se si eso dependera del tipo de pic que estes usando.
Ese tiempo de espera es necesario, por que? Para que el condensador interno pueda cargarse debidamente y otras cosillas que no vienen a cuento, aunque si te gusta el tema analogico tienes el modelo en las hojas de caracteristicas del pic.
ademas, este tiempo puede depender de muchas otras cosas.
Yto te recomiendo que primero pruebes con un retardo de 25 us, mas que suficientes, y si todo va bien pues vale, si no funciona entonces tendras un problema de codigo.
ej:
set_adc_channel(0); //ADC canal 0
delay_us(20); //esperamos para el Tad (minimo son 13 us)
//asi el C interno puede cargarse bien
valor1=read_adc(); //leo
Otra cosa que se me ocurre es que no tengas bien puestos los canales, es decir, que tengas una configuracion que tu pic no lo permita.
Vete al archivo cabecera de tu pic y mira las opciones posibles, en el caso de que no estes seguro.
Un saludo