calculateaverage.c

来自「在单片机中由于CPU的A/D精度、模拟通道处理限制和各种漂移」· C语言 代码 · 共 47 行

C
47
字号

/********************************************
*文件名称:CalculateAverage.c
*
*摘要:
*入口:
*返回:平均值      	
*
*版本:V1.0	2008-9-2 13:10:36
*作者:风月无边
*
*********************************************/
#define AVERNUM 10

static short CalculateAverage(short* pData)         	//去掉最大值和最小值求平均数(
{
    short nMax = *pData,nMin = *pData,nAll = *pData;
    unsigned char i;
    
    for(i=1; i<AVERNUM; i++,pData++)
    {
      	if(*pData>nMax) nMax = *pData;
      	if(*pData<nMin) nMin = *pData; 
      	nAll += *pData;
    }
    return((nAll-nMax-nMin)/(AVERNUM-2));						
}


static char s_bDataNo;
static short s_nAverageData[AVERNUM];

static short GetDataFromAverSequence(short* pData)    
{
	short nData = 0;
	
	s_nAverageData[s_bDataNo] = *pData;
	s_bDataNo++;	
	if(s_bDataNo>=AVERNUM)
	{
		s_bDataNo = 1;
		nData = CalculateAverage((short*)s_nAverageData);  //得到平均功率因数
		s_nAverageData[0] = nData;
	}
	return nData;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?