如何从ADC(PIC16F877A)获取整数值?

时间:2019-06-24 02:24:54

标签: c microcontroller pic

我已经创建了有关寄存器的配置文件:

void ADC_Init()
{
ADCON1bits.ADCS2 = 0;
ADCON0bits.ADCS1 = 1;
ADCON0bits.ADCS0 = 0;
//selection of a channel
ADCON0bits.CHS0=0;
ADCON0bits.CHS1=0;
ADCON0bits.CHS2=0;
//result format selection
ADCON1bits.ADFM=0; //right justify
//port configuration
ADCON1bits.PCFG0=0;
ADCON1bits.PCFG1=0;
ADCON1bits.PCFG2=0;
ADCON1bits.PCFG3=0;
//set status sit
ADCON0bits.GO_DONE=1;
//switch on ADC
ADCON0bits.ADON=1;
}

现在如何从输入中获取整数读数?

1 个答案:

答案 0 :(得分:1)

等待ADC准备就绪,然后读取结果。

while (ADCONbits.GO_DONE);     //wait until conversion is ready
result = (((uint16_t)(ADRESH) << 8)) | ADRESL;

但是最好的办法是编写一个函数,例如int_16_t readADC(int16_t channel)您在哪里:
-选择频道
-启动ADC
-等到准备好
-然后返回结果。