为什么我这编的程序ADC只能读一次程序
int main(){uchar i=0;
uint AdValue=0;
DDRD|=0x03;
init_SPI();
ADCSRA = 0x00; //禁止AD转换
ADMUX |=0b11000010;//选择内部2.56V基准电压源,右对齐,通道ADC2
ADCSRA |=0b11000100;//ADC使能,启动ADC,单次转换模式,写1清除中断标志,选择16分频
loop_until_bit_is_set(ADCSRA,ADIF);//检测ADSC=0
AdValue=ADCL;
ADCSRA|=(1<<ADIF);//写1清除标志位
//g_nAdValue|=(ADCH<<8);
while(1)
{
SPI_MTrans(DisCode);
PORTD=1;
delay_us(40);
SPI_MTrans(DisCode[(AdValue/10)%10]);
PORTD=2;
delay_us(40);
SPI_MTrans(DisCode);
PORTD=3;
delay_us(40);
if(i>80) { ADCSRA |=0X80;
loop_until_bit_is_clear(ADCSRA,ADIF);
AdValue=ADCL;
ADCSRA|=(1<<ADIF);//写1清除标志位
i=0 ;
}
i++;
}
}
马老师问一下我的这个程序为什么只在第一次ADC读取数据,之后就能启动ADC了呢?
页:
[1]