打印

AD转换程序问题

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

使用特权

评论回复
板凳
spark周| | 2012-12-15 10:22 | 只看该作者


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转换完成

使用特权

评论回复
地板
liliang9554| | 2012-12-15 10:22 | 只看该作者
楼上正解,楼主可以试试

使用特权

评论回复
5
jiaxw|  楼主 | 2012-12-15 10:23 | 只看该作者
我现在的应用是一个反射式红外对管,想先看看不挡住红外的时候的AD结果

使用特权

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

使用特权

评论回复
7
liliang9554| | 2012-12-15 10:25 | 只看该作者
不太懂了

使用特权

评论回复
8
jiahy| | 2012-12-15 10:26 | 只看该作者
PSLSD:好像没什么改变嘛?

使用特权

评论回复
9
spark周| | 2012-12-15 10:26 | 只看该作者
有点奇怪啊

使用特权

评论回复
10
jiaxw|  楼主 | 2012-12-15 10:27 | 只看该作者
算了,就这样把,周一问问师父

使用特权

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

本版积分规则

825

主题

9762

帖子

4

粉丝