参考电压,通道都选择好了,12位AD采样5V电压,为什么一直是255,不是4095???求大神解答
结果寄存器设置右对齐,高位左移8位加地位,输出结果总是255,求解
请给出具体芯片型号,相关程序设置及部分程序示例,才好分析呢‘’
#define VN_AC1 1 //RA1(AN1)
void AdInit(void)
{
ADCON0=0x01;
ADCON1=0x00;
ADCON2=0x82;
ADIE=0; //禁止中断
ADIF=0;
}
unsigned int AD_Power(unsigned char channel)
{
unsigned int AD_Dat=0;
unsigned int Volt_Dat=0;
unsigned int Sum=0;
ADCON0&=~0x3c;
ADCON0|=(channel<<2);
__delay_us(20);
GO=1;
while(GO);
AD_Dat=ADRESH*256+ADRESL;
return AD_Dat;
}
VAC=AD_Power(VN_AC1);
printf("%u\r\n",VAC);
结果串口输出最大为255
ANCON0=0b00110111; //AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0
PORTA=0x00;
LATA=0x00;
TRISA=0b00110111;
对应的IO口也设置了
ADCON0&=~0x3c;
ADCON0|=(channel<<2);
这个设置不太正确
按标准,应该用一条指令就可以了,并且能做到相关位能确定
例子是:ADCON0=(channel<<2)+1,这样就可以了