SN8P2711ADC采样程序

[复制链接]
查看6532 | 回复3 | 2012-10-30 21:35:33 | 显示全部楼层 |阅读模式
#include"my.h"
#include"Delay.h"

uint ADC_buf;

void ADC_Init()
{
        FADENB=1;
        delay_us(100);
        ADM=0X90;                     //AIN0
        P4CON=0X01;                        //P40 模拟输入
        P4UR=0XFE;                        //P40禁止上拉
        VREFH=0X02;                        //VREF=4V;
        ADR=0X00;                        //Fcpu/16
        FADS=1;                                //启动转换
        while( ! FEOC);
        FEOC=0;
        ADC_buf=ADB;
        ADC_buf=ADC_buf<<8;       
        ADC_buf=ADC_buf+(ADR & 0X0F);
  }
请各位高手帮我看看,这是SN8P2711ADC采样程序,为什么采样得到的结果不正确,请高手指点
MCU | 2012-10-31 08:31:37 | 显示全部楼层
1、ADC设置,最好是先设置好通道参考电压转换速率等后再使能ADC电路,接着等待最少100US左右是ADC电路稳定后在开始AD
2、不了解C,uint ADC_buf,这样的话,不知道ADC_buf是几位的,如果是16BIT的,那么没问题
3、ADC_buf=ADC_buf<<8;        
        ADC_buf=ADC_buf+(ADR & 0X0F);
这样的结果,ADC的高八位就在ADC_buf高八位,但低四位去在ADC_buf的第八位里面,也就是说B4、B5、B6、B7都是0,也就是说你的结果是一个不连续的,怎么做?留给你自己想一下吧
chaoyue | 2012-11-16 14:50:22 | 显示全部楼层
uint ADC_buf,uint指的是unsigned long,ADC_buf=ADC_buf<<8; 改为ADC_buf=ADC_buf<<4; 这个程序通了.对于你的回复,我还是非常感谢,祝工作顺利!
钟级陷阱 | 2013-11-22 14:30:17 | 显示全部楼层
chaoyue 发表于 2012-11-16 14:50
**** 作者被禁止或删除 内容自动屏蔽 ****

你这个的分辨率是16位?你怎么就确定不是8位呢/
您需要登录后才可以回帖 登录 | 注册

本版积分规则