Mmmm...parece estar bien.
Yo hago asi para leer y pasar de un canal a otro:
//Leo el valor del ejeX -> AN0 ------------------------------------//
int Leo_EjeX (void){
set_adc_channel(0);
delay_ms(1);
a_ejeX=read_adc();
delay_ms(1);
return a_ejeX;
}
//Leo el valor del ejeY -> AN1 ------------------------------------//
int Leo_EjeY (void){
set_adc_channel(1);
delay_ms(1);
a_ejeY=read_adc();
delay_ms(1);
return a_ejeY;
}
Deberias checar el contenido de
18f4550.h para ver exactamente que significa (y en la hoja de datos, claro!) setup_adc_ports(
AN0_TO_AN1 );
¿Lo estas probando en un circuito real o en un simulador?
Saludos!
//Leo el valor del ejeZ -> AN2 ------------------------------------//
int Leo_EjeZ (void){
set_adc_channel(2);
delay_ms(1);
a_ejeZ=read_adc();
delay_ms(1);
return a_ejeZ;
}