PIC16F616的AD转换后结果不对啊?????

2020-02-08 09:10发布

本帖最后由 hmg6681 于 2012-6-16 15:37 编辑

程序:

uint vAD_get()
{
         uint ADval;
         uint ADvalf;
         asm("clrwdt");
       
         C1ON=0;
         TRISA2=1;  //定义RA0、RA2为输入
         ANS2=1;        //定义RA0、RA2为模拟输入口
         ADRESL=0;
         ADRESH=0;
         ADCON1=0x40;        //选择AD采样频率Fosc/4
         ADCON0=0x89;        //右对齐、参考电压=VDD、模拟通道AN2、使能AD采样
           delay(20,12);    //延时210us
         GO=1;                //启动AD
         while(GO);                //等待ADGO位0,表示转换已经完成
         /////////ADRESH=ADRESH;
         //////////ADRESL=ADRESL;
         ADval=ADRESH;        //读出高两位
         ADval=(ADval<<8)|ADRESL;   //把高两位和低八位合成一个数据
       
         ADvalf=(ADval/1023)*5*11;   //转化为实际值
         ADval=ADvalf*1000;         //取三位小数,电压单位由V变为mV
        return(ADval);
       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。