Afrontar un problema mientras se realiza la conversión de ADC

0

SoynuevoenlaprogramaciónPIC,yenelsiguienteprograma,intentoparpadearelLEDparaunrangoespecíficoderesistencia.Perocuandoherealizadoladepuración,descubríquemientraselbucleseestablecióparaesperarhastaqueserealicelaconversiónenADC_Read()noseestácompletando.Porfavor,ayuda.Diagramadecircuitoadjuntotambiénconestehilo.

#include<pic.h>#include<htc.h>#define_XTAL_FREQ2000000voiddelay(intcnt){while(cnt--);}voidADC_Init(){ADCON0=0X81;ADCON1=0XCE;}intADC_Read(unsignedintch){ADCON0=0X81;ADCON1=0XCE;intresult;delay(50);ADON=1;while(ADON==1);result=ADRESH;result=result<<8;result=result|ADRESL;return(result);}intmain(){unsignedintadcValue;TRISA=0X01;PORTB=0X00;TRISB0=0X00;ADC_Init();while(1){adcValue=ADC_Read(0);if(adcValue>=300&&adcValue<=500){RB0=1;}else{RB0=0;}}return0;}

    
pregunta PICFanPri

1 respuesta

3

Utilice el bit GO /! DONE (GO_nDONE) en el bucle while, no el bit ADON.

Los archivos de la biblioteca están en "pic16f876a.h" (o en el procesador que estés usando), que generalmente se encuentra en la versión particular del compilador xc en el directorio de inclusión.

Por cierto, un resistor de 4.7K ohmios en un nivel de unidad (suponiendo 5V) hará que la corriente del LED sea muy pequeña, a menos que el LED sea un tipo de alta eficiencia será débil.

    
respondido por el isdi

Lea otras preguntas en las etiquetas