12f675 AD到底几位?

2020-02-07 09:41发布

12f675 用7805供电,基准选用内部Vdd,数据手册上说它的内部AD为10位 ,但是我AD接5v后读出的数接近512(0x1ff)相当于9位了,不知道这是怎么回事?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
portx
2020-02-07 21:18
你没有配置ADFM AD格式对齐位

(原文件名:ADFM.JPG)


默认格式ADFM位为0即左对齐格式,当你将结果*256时相当于左移8位 当然结果是512即二进制的0b1000000000

以下代码是我在16F877A芯片的配置代码
unsigned int ADBUF;

ADC_INIT(void)
{
ADCON0=0x40;
ADCON1=0xCE;
ADFM=1;
ADON=1;
ADIF=0;
//ADIE=1;        //若启动ADC中断模式则将此位置1
////////////////////////ADC模块初始化结束
PEIE=1;
GIE=1;
}

void interrupt ADC_INIT(void)
{
        if((ADIF)&(ADIE))
        {
        ADIF=0;
        ADBUF=ADRESH;
        ADBUF<<=8;
        ADBUF+= ADRESL;
        ADGO=1;
        }

}

main()
SYS_INIT();
ADC_INIT();
ADGO=1;//启动AD
{
while(1)
{
///````````````
}

}

一周热门 更多>