我已经制作了有关寄存器的配置文件:

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;
}


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

最佳答案

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

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


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

关于c - 如何从ADC(PIC16F877A)获取整数值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56729193/

10-11 02:30