初次使用PIC18F66K80这款单片机,写入一个AD采样程序。输入电压范围为2.5~5V时,亮灯LED灯。输入电压范围在0~2.5V时关闭LED灯。但测试发现,只有输入电压在0.5~0.7V时LED灯才关闭,0~0.5V及0.7V~5V时LED灯均被点亮。(0~0.5V时AD采样结果竟为负数)。单片机晶振为16M,采用4倍频。请高手指点。程序如下:
void AD_Init()
{
TRISAbits.TRISA0 = 1; //RA0为输入
ANCON0 = 0X01; //RA0为模拟引脚
ANCON1 = 0X00;
ADCON1 = 0X00; //参考电压选择AVDD和AVSS,模拟反向通道选择AVSS
ADCON2 = 0XB4; //数据右对齐,AD采集时间为16TAD,AD转换时钟选择为FOSC/4
ADCON0 = 0X01; //开启AD转换
delay(1000);
}
unsigned int AD_GetValue()
{
unsigned int AD_date;
AD_Init();
ADCON0bits.GO_DONE = 1; //AD转换
while(ADCON0bits.GO_DONE);
AD_date = (((ADRESH&0X0F)<<8)|ADRESL);
if(AD_date >= 0X03FF)
bLED_LOOP = 0; //LED灯点亮
else
bLED_LOOP = 1;
return AD_date;
}
|