我已经创建了有关寄存器的配置文件:
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;
}
现在如何从输入中获取整数读数?
答案 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
-等到准备好
-然后返回结果。