使用VDD做参考电压,18脚实际测量是3.9V,但是我在程序中测到的ADRESH 的数值是5.
初始化代码如下:
void adc_init(void)
{
CHS4 = 0;
CHS3 = 0;
CHS2 = 0;
CHS1 = 0;
CHS0 = 1; //select AN1
ANSA1 = 1; //select AN1
ADON = 1; //enable ADC
GO_nDONE = 1;
ADFM = 1; /// high byte high 6 bits is not use
ADCS2 = 0; ///
ADCS1 = 1; ///
ADCS0 = 1; /// ADC CLK SELECT INNER RC
TRIGSEL3 = 0;
TRIGSEL2 = 0;
TRIGSEL1 = 0;
TRIGSEL0 = 0;
}
在主程序中,检测代码如下:
void main(void)
{
init();
while(1)
{
if(GO_nDONE == 0)
{
GO_nDONE = 1;
adc_value_ave = ADRESH;
}
.
.
.
调试发现 adc_value_ave 的值是小于5的数,感觉严重不对。
请高手帮忙看看代码哪里有问题?
|