|
連續(xù)取10個樣(多取一些也可以),然后就行大小排序。
最后取中間兩個相加,再除以2就可以了。
// 經(jīng)典冒泡排序
void BubbleSort(u16 *arr, u8 n)
{
int i = 0, j =0;
for(i = 0; i < n; i++)
for(j = 0; j < n - 1 - i; j++)
{
if(arr[j] > arr[j + 1])
{
arr[j] = arr[j] ^ arr[j+1];
arr[j+1] = arr[j] ^ arr[j+1];
arr[j] = arr[j] ^ arr[j+1];
}
}
}
void ADC_Read_Switch()
{
u16 xdata val[10];
u8 xdata j;
for(j=0;j<10;j++)
val[j]=ADC_START(ADC_CH0); //通道0,連續(xù)采樣5次
BubbleSort(val,10); //排序
AD0=(val[4] + val[5])/2;
}
|
|