芯片是PIC18F26K22,AD通道选择1,始终采集上来的AD值为0,实际引脚电压在2.6V了,这是什么原因,各位有遇到过的吗
/*AD初始化*/
void ADinit(void)
{
TRISA=0b11111111;
/*设置为模拟输入*/
ANSELA=0X2F;
/*选择通道1,使能AD模块*/
ADCON0=0X05;
/*参考电压选择 VDD,VSS*/
ADCON1=0X00;
ADCON2=0X0C;
ADRESL=0;ADRESH=0x00;
}
void AD_2(void)
{
static uchar i=0;
uint mad0,mad1;
if(b1.b1_2.b1)
{
//AD采集端口选择
b1.b1_2.b0=0;
ADCON0bits.CHS=1;
ADCON0bits.ADON = 1;
ADCON0bits.GO_nDONE = 1;
while(ADCON0bits.GO_nDONE);
if(i>12)i=0;
else
{
/*取10位AD值*/
mad0=ADRESH;mad1=ADRESL;
mad0=mad0<<2;mad1=mad1&0XC0;mad1=mad1>>6;
AD[i]=mad0|mad1;
i++;
if(i>10)
{
i=0;
adfh[adtd]=AD_0();//取采样中间值
//adctd();//AD通道切换
}
}
}
} |