打印

在main中调用ADC转换,但是好像结果一直有问题

[复制链接]
903|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2015-2-26 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void ADC_Init(void)
{



//ADCON0 = 0xE0;   //使能ADC,选择全差分模式P1.0,P1.1为输入 11100000B

ADCON0 = 0x80;

delayms(100);

ADCFG0 = 0x10;   //0001 0010:SYSCLK/2,ADRJ=1,RESULT右对齐,全速模式

P1AIO = 0xff;
//将P1都设定为输入模式,AD转换必须禁止输出
}
ADC_Convert()
{
     ADCON0|=0x08;        //ADCS=1, 启动ADC转换
     while((ADCON0 & 0x10)!= 0x10);

return(ADCDH<<8 + ADCDL);
}



在main中调用ADC转换,但是好像结果一直有问题,转换出错,求教或者那位帮忙给个例程
沙发
pengf|  楼主 | 2015-2-26 20:42 | 只看该作者
MA84G56

使用特权

评论回复
板凳
renyaq| | 2015-2-26 20:44 | 只看该作者
LZ看看这样行不?

ADCON0 = 0xE0;   //使能ADC,选择全差分模式P1.0,P1.1为输入 11100000B
delayms(100);
ADCFG0 = 0x10;   //0001 0010:SYSCLK/2,ADRJ=1,RESULT右对齐,全速模式
P1M0=0x03;  //P1.0,P1.1为输入模式
P1M1=0xFC;
P1AIO = 0xff; //将P1都设定为输入模式,AD转换必须禁止输出
//ADC_Convert()
//{
     ADCON0|=0x08;        //ADCS=1, 启动ADC转换
     // while((ADCON0 & 0x10)!= 0x10);
    //等待 ADCON0.4 =1 ,ADC转换完成

使用特权

评论回复
地板
pengf|  楼主 | 2015-2-26 20:44 | 只看该作者
我现在的应用是一个反射式红外对管,想先看看不挡住红外的时候的AD结果

使用特权

评论回复
5
pengf|  楼主 | 2015-2-26 20:47 | 只看该作者
当挡住的时候的AD结果,但是目前转换出来的ADCDH和 ADCDL的AD结果在不停的跳动。

使用特权

评论回复
6
栩栩如生| | 2015-2-26 20:47 | 只看该作者
PSLSD:好像没什么改变嘛?

使用特权

评论回复
7
supernan| | 2015-2-26 20:47 | 只看该作者
楼主,你的P1口木有设置成输入!

使用特权

评论回复
8
pengf|  楼主 | 2015-2-26 20:49 | 只看该作者
算了,就这样把

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝