unsigned int sAD1[10] ; unsigned int xdata AD_Value; void get_adc_value(void) { static unsigned char adc_cnt= 0; unsigned int xdata ad_min = 0; unsigned int xdata ad_max = 0; unsigned int xdata k = 0; sAD1[adc_cnt] = GET_ADC_VALUE(2); adc_cnt++; if (adc_cnt == 6) { ad_min = sAD1[0]; ad_max = sAD1[0]; k = sAD1[0]; for (adc_cnt = 1; adc_cnt < 6; adc_cnt++) { if (sAD1[adc_cnt] < ad_min) { ad_min = sAD1[adc_cnt]; } else if (sAD1[adc_cnt] > ad_max) { ad_max = sAD1[adc_cnt]; } k += sAD1[adc_cnt]; } k -= ad_min; k -= ad_max; k >>= 2; AD_Value = k; k = 0; adc_cnt = 0; } } void get_adc_value1(void) { static unsigned char adc_cnt= 0; unsigned int xdata ad_min = 0; unsigned int xdata ad_max = 0; unsigned int xdata k = 0; sAD2[adc_cnt] = GET_ADC_VALUE(7); adc_cnt++; if (adc_cnt == 6) { ad_min = sAD2[0]; ad_max = sAD2[0]; k = sAD2[0]; for (adc_cnt = 1; adc_cnt < 6; adc_cnt++) { if (sAD2[adc_cnt] < ad_min) { ad_min = sAD2[adc_cnt]; } else if (sAD2[adc_cnt] > ad_max) { ad_max = sAD2[adc_cnt]; } k += sAD2[adc_cnt]; } k -= ad_min; k -= ad_max; k >>= 2; AD_Value1 = k; k = 0; adc_cnt = 0; } }
读6次,不要最大不要最少,然后取平均