بچه ها راجع به این برنامه خواهشا توضیحاتی بهم بدید
کد:
#ifndef adc_INCLUDED_
#define adc_INCLUDED_
void config_adc(char adc);
unsigned int adc_data;
void start_adc(void);
void config_adc(char adc)
{
*AT91C_ADC_CR = AT91C_ADC_SWRST;
*AT91C_ADC_CHER = (adc);
*AT91C_ADC_MR = 0x0f1f3f00;
*AT91C_ADC_IDR = 0xffffffff;
}
void start_adc(void){
*AT91C_ADC_CR = AT91C_ADC_START;
}
unsigned int read_adc(char channel)
{
switch (channel)
{
case 0:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC0) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR0 & AT91C_ADC_DATA;
break;
case 1:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC1) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR1 & AT91C_ADC_DATA;
break;
case 2:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC2) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR2 & AT91C_ADC_DATA;
break;
case 3:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC3) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR3 & AT91C_ADC_DATA;
break;
case 4:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC4) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR4 & AT91C_ADC_DATA;
break;
case 5:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC5) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR5 & AT91C_ADC_DATA;
break;
case 6:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC6) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR6 & AT91C_ADC_DATA;
break;
case 7:
while ((*AT91C_ADC_SR & AT91C_ADC_EOC7) == 0);
adc_data = (unsigned int) *AT91C_ADC_CDR7 & AT91C_ADC_DATA;
break;
}
return(adc_data);
}
#endif







دیدگاه