为什么的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]