Tengo un PIC16F1829 y no puedo hacer que el fotoresistor y el LED hagan nada. Estoy tratando de usar RA0 para la entrada y RC0 para la salida. ¿Qué estoy haciendo mal?
Mi código:
void ADC_Init()
{
ADCON0 = 0x01; //Select channel AN0
ADCON1 = 0xF0; //Right justify, Frc clock
}
unsigned int ADC_Read(unsigned char channel)
{
if(channel > 7) //Channel range is 0 ~ 7
return 0;
ADCON0 &= 0xC5; //Clearing channel selection bits
ADCON0 |= channel<<3; //Setting channel selection bits
__delay_ms(2); //Acquisition time to charge hold capacitor
ADGO = 1; //Initializes A/D conversion
while(ADGO); //Waiting for conversion to complete
return ((ADRESH<<8)+ADRESL); //Return result
}
void main()
{
unsigned int photo;
int light;
TRISA = 0;
ANSELA = 0;
TRISC = 0;
ADC_Init(); //Initialize ADC
while(1)
{
photo = ADC_Read(0);
light = 100 - photo/10.24;
if (light >= 80)
{
RC5 = 0;
}
else
{
RC5 = 1;
}
}
}
La prueba RC5 funciona haciendo el siguiente ciclo:
for (j=0; j<0x10; j++)
{
RC5 = 1;
for (i=0; i< 0x3FF; i++) continue ;
RC5 = 0;
for (i=0; i< 0x3FF; i++) continue ;
}
Fuentes que estoy usando: enlace enlace
Notas: Mi fotoresistor funciona cuando está conectado al VSS y al LED y el LED está alimentado por mi placa. El LED está encendido y cuando toco el fotorresistor, el LED se apaga. Parece que no puedo hacer nada de esto con la codificación C.