|
发表于 2012-1-25 22:40:42
|
显示全部楼层
void ADC_Polling ( PSTADC p, unsigned char direct )
{
unsigned char ch = 0;
unsigned char n = p->n;
unsigned char Channel = p->Channel;
unsigned int Volt;
if ( ADC_Is_Complete == FALSE ) return;
ADC_Clear_Complete;
if ( n++ == ADC_FIRST_CONVERSION ) return;
p->Buf[n-1] = ADC_WORD_VAlUE;
if ( n < ADC_BUF_LEN ) return;
n = 0;
if ( Channel == ADC_Channel0 )
if ( direct == POSITIVE ) ch = ADC_DIFF1_ADC10;
else ch = ADC_DIFF3_ADC01;
else if ( Channel == ADC_CHANNEL_NUM - 1 ) ch = ADC_Channel0;
else ch = Channel + ADC_DIFF_CHANNEL;
ADC_Set ( ch );
Volt = Data_Average ( p->Buf, ADC_BUF_LEN );
p->Volt[Channel] = Volt / 4;
if ( Volt & 0x0002 ) p->Volt[Channel]++;
if ( ++Channel == ADC_CHANNEL_NUM ) Channel = ADC_Channel0;
p->Channel = Channel;
p->n = n;
}
这个函数不是很明白,if ( n < ADC_BUF_LEN ) return;这个,刚开始的时候,n不是总是比ADC_BUF_LEN小么,那下边的不是永远不能执行下去了?p->n = n;这个也不能执行了吧? |
|