Hola amigos...
tengo un problemita con los canales analogicos de el PIC 18f14k50 en especial el C2 (AN6) y el ADCON0 , espero que me puedan ayudar, aca les dejo una imagen y el codigo que estoy utilizando.
#include <18F14K50.h>
#device adc=8
#fuses xt, nowdt
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_b7, rcv=pin_b5, bits=8)
int acelerometro() {
int valor, x, y, z;
set_adc_channel(11);
delay_ms(10);
x = read_adc();
set_adc_channel(10);
delay_ms(10);
y = read_adc();
set_adc_channel(6);
delay_ms(10);
z = read_adc();
if (z < x && z < y && z < 60) {
valor = 1;
} else if (z > x && z > y && z > 160) {
valor = 2;
} else if (x < y && x < z && x < 60) {
valor = 3;
} else if (x > y && x > z && x > 160) {
valor = 4;
} else if (y < x && y < z && y < 60) {
valor = 5;
} else if (y > x && y > z && y > 160) {
valor = 6;
} else {
valor = 0;
}
return (valor);
}
void main(void) {
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_vref(VREF_OFF);
int valor = 1;
int flag = 0;
while (TRUE) {
while (valor != 0) {
if (flag != 0) {
putc(170);
delay_ms(10);
while (TRUE) {
valor = acelerometro();
if (valor == 0)
break;
putc(valor);
delay_ms(10);
}
putc(171);
delay_ms(10);
} else {
flag = 1;
valor = acelerometro();
}
}
valor = acelerometro();
}
putc(valor);
}