5袋苹果 发表于 2012-7-25 09:12:18

STC2C2052AD,AD采样有问题,附程序

本帖最后由 5袋苹果 于 2012-7-25 09:24 编辑

void Init_ADC(void)
{
P1M0=0x10;
P1M1=0x10;
ADC_DATA=0;
ADC_CONTR=ADC_POWER|ADC_SPEEDHH|0x04;
Delay(2);
ADC_CONTR|=ADC_START;                                        //启动AD转换
_nop_();
_nop_();
_nop_();
_nop_();
}

void GetADCResult(void)                         
{
if(!(ADC_CONTR & ADC_FLAG))                                //AD转换是否完成
        {
        ADC_CONTR &= ~ADC_FLAG;                         //清除 AD 转换结束标志位
        ADC_CONTR &= ~ADC_START;                                //Close ADC
        if(ch==0)                                                                //p14
                {
//                ch=1;
                DataAdcResult0+=ADC_DATA;
                if(ADC_DATA>=1)
                        {
                        LED2=0;
                        }
                }                                                                               
//        ADC_CONTR|=ch;                                                       //0-7 路任意一路      
//        _nop_();                                         //Must wait before inquiry   //延时4个时钟重要
//        _nop_();
//        _nop_();
//        _nop_();
        ADC_CONTR|=ADC_START;                                        //启动AD转换
        }
}

main (void)
{
WDT_CONTR=0x3c;
Init_ADC();
while(1)
        {
        WDT_CONTR=0x3c;
        LED1=0;
        GetADCResult();
        }
}这里只测试P14通道,AD数据寄存器ADC_DATA一直为0,不知道怎么回事,请大家给我找找问题

5袋苹果 发表于 2012-7-25 14:26:05

自己顶到第一页,请指教哪里有问题啊{:dizzy:}

lyg407 发表于 2012-7-25 18:33:23

STC AD 采集还是比较简单的,而且官方提供程序。 可以下载一个官方,直接修改。。
另外,你的程序应该也是官网的,但是我发现给你改的复杂了。CH 好像对应也不对。。你改得太复杂了。

5袋苹果 发表于 2012-7-25 22:41:03

lyg407 发表于 2012-7-25 18:33 static/image/common/back.gif
STC AD 采集还是比较简单的,而且官方提供程序。 可以下载一个官方,直接修改。。
另外,你的程序应该也是 ...

官方提供的程序开启AD后,一直等待的,太费效率了,我这个是循环检测的,我只测试了p14口,CH不用理会
页: [1]
查看完整版本: STC2C2052AD,AD采样有问题,附程序