|
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[AdValue/100]);
PORTD=1;
delay_us(40);
SPI_MTrans(DisCode[(AdValue/10)%10]);
PORTD=2;
delay_us(40);
SPI_MTrans(DisCode[AdValue%10]);
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了呢? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|