打印

哪位帮忙给个例程

[复制链接]
1007|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuww|  楼主 | 2016-10-16 22:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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转换,但是好像结果一直有问题,转换出错,求教或者哪位帮忙给个例程
沙发
zhuww|  楼主 | 2016-10-16 22:18 | 只看该作者
MA84G56

使用特权

评论回复
板凳
zhanglli| | 2016-10-16 22:20 | 只看该作者
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转换完成

使用特权

评论回复
地板
zhuww|  楼主 | 2016-10-16 22:22 | 只看该作者
我现在的应用是一个反射式红外对管,想先看看不挡住红外的时候的AD结果

使用特权

评论回复
5
zhuww|  楼主 | 2016-10-16 22:24 | 只看该作者
当挡住的时候的AD结果,但是目前转换出来的ADCDH和 ADCDL的AD结果在不停的跳动。

使用特权

评论回复
6
lium| | 2016-10-16 22:26 | 只看该作者

PSLSD:好像没什么改变嘛?

使用特权

评论回复
7
guoyt| | 2016-10-16 22:27 | 只看该作者
楼主,你的P1口木有设置成输入!

使用特权

评论回复
8
zhuww|  楼主 | 2016-10-16 22:29 | 只看该作者
唉,还是没有什么结果,算了,先结贴吧,多谢大家啦

使用特权

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

本版积分规则

893

主题

8252

帖子

1

粉丝