nizhenyu 发表于 2010-11-12 14:40:42

为什么我这编的程序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]
查看完整版本: 为什么我这编的程序ADC只能读一次程序