dhw5qq 发表于 2014-5-8 12:48:41

为什么的mg48的AD只转换了一次

好奇怪?void Ad_Init(u8 mux)
{
    ADCSRA &=~(1<<7) ; // 不使能ad
        ADCSRA|=(1<<ADPS2);
        ADCSRA|=(1<<ADPS0);//32分频
        DIDR0|=(1<<0);               //ain0 和ain1禁止数字输入
        DIDR0|=(1<<1);               //数字输入禁止
    ADMUX |= mux;                  //select adc input 0   外部的vref
    ACSR= 0x80;                  
        ADCSRB = 0x00;
    ADCSRA = 0xE4;
        ADCSRA |=(1<<7) ; //使能ad
       
}

unsigned int adc_read(void)
{
        unsigned char i;
        unsigned int ret;
        unsigned int reth;       
        ADCSRA |=(1<<7) ; //使能ad
        for(i=0;i<8;i++)
        {
                ADCSRA|=0X40;//启动转换
                while(ADCSRA&0x40);               
                adcbuf=ADCL;
                adcbufh=ADCH;
        }
        ret=0;
        for(i=0;i<8;i++)
        {
                ret+=adcbuf;
        }
        ret=ret/8;       
        reth=0;
        for(i=0;i<8;i++)
        {
                reth+=adcbufh;
        }
        reth=reth/8;
    ret|=(unsigned int)(reth<<8);       
        ADCSRA &=~(1<<7) ; // 不使能ad
        return ret;
}
页: [1]
查看完整版本: 为什么的mg48的AD只转换了一次