|
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周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|