⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_app.h

📁 使用MC9S12DP256写的CAN转串口程序。
💻 H
字号:
//AD数字滤波子程序
void AD_Digital_Filter(uint * AD0,uint * AD1,uint * AD3,uint * AD6,uint count)//count取值为3~255
{
	uchar i=0;
	uint AD_temp = 0;
	
	uint AD0_max = 0;
	uint AD0_min = 0;
	ulong AD0_data = 0;
	
	uint AD1_max = 0;
	uint AD1_min = 0;
	ulong AD1_data = 0;
	
	uint AD3_max = 0;
	uint AD3_min = 0;	
	ulong AD3_data = 0;
	
	uint AD6_max = 0;
	uint AD6_min = 0;
	ulong AD6_data = 0;

	for(i=0;i<count;i++)
	{    
		AD_temp=ATD0DR0;
		
		if(0==i)
			AD0_max = AD0_min = AD_temp;

		if(AD_temp>AD0_max)
			AD0_max = AD_temp;
		else if(AD_temp<AD0_min)
			AD0_min = AD_temp;

		AD0_data += AD_temp;
		//---------------------------------------
		AD_temp=ATD0DR1;
		
		if(0==i)
			AD1_max = AD1_min = AD_temp;

		if(AD_temp>AD1_max)
			AD1_max = AD_temp;
		else if(AD_temp<AD1_min)
			AD1_min = AD_temp;

		AD1_data += AD_temp;
		//---------------------------------------
		AD_temp=ATD0DR3;
		
		if(0==i)
			AD3_max = AD3_min = AD_temp;

		if(AD_temp>AD3_max)
			AD3_max = AD_temp;
		else if(AD_temp<AD3_min)
			AD3_min = AD_temp;

		AD3_data += AD_temp;
		//---------------------------------------
		AD_temp=ATD0DR6;
		if(0==i)
			AD6_max = AD6_min = AD_temp;

		if(AD_temp>AD6_max)
			AD6_max = AD_temp;
		else if(AD_temp<AD6_min)
			AD6_min = AD_temp;

		AD6_data += AD_temp;
		
	}
	
	AD0_data = AD0_data - AD0_max - AD0_min;
	AD0_data = AD0_data/(count-2);
	AD1_data = AD1_data - AD1_max - AD1_min;
	AD1_data = AD1_data/(count-2);
	AD3_data = AD3_data - AD3_max - AD3_min;
	AD3_data = AD3_data/(count-2);
	AD6_data = AD6_data - AD6_max - AD6_min;
	AD6_data = AD6_data/(count-2);
	
	*AD0 = (uint)AD0_data;
	*AD1 = (uint)AD1_data;
	*AD3 = (uint)AD3_data;
	*AD6 = (uint)AD6_data;
}

//通用数字滤波子程序
float G_Digital_Filter(float input,uchar count)//count取值为2~20
{
	static uchar i = 0;
	uchar j = 0;
	static float buffer[20] = {0};
	double summ = 0;
	
	buffer[i] = input;
	i++;
	if(i == count)
		i = 0;
	
	summ = 0;
	for(j=0;j<count;j++)
		summ += buffer[j];
		
	return summ/count;	
}
float G_Digital_Filter_2(float input,uchar count)//count取值为2~20
{
	static uchar i = 0;
	uchar j = 0;
	static float buffer[20] = {0};
	double summ = 0;
	
	buffer[i] = input;
	i++;
	if(i == count)
		i = 0;
	
	summ = 0;
	for(j=0;j<count;j++)
		summ += buffer[j];
		
	return summ/count;	
}

/***************************************************************************
    FUNCTION: void DA_Output(uint data_A,uint data_B,uint data_C,uint data_D)

    PURPOSE: 4路DA输出设定程序   
****************************************************************************/
void DA_Output(uint data_A,uint data_B,uint data_C,uint data_D)
{
	R_W = 0;
	_LDAC = 0;
	
	A0 = 0;
	A1 = 0;
	PORTAB = data_A;
	_CS = 0;
//	Delay(1);
	_CS = 1;
//	Delay(1);
	
	A0 = 1;
	A1 = 0;
	PORTAB = data_B;
	_CS = 0;
//	Delay(1);
	_CS = 1;
//	Delay(1);
	
	A0 = 0;
	A1 = 1;
	PORTAB = data_C;
	_CS = 0;
//	Delay(1);
	_CS = 1;
//	Delay(1);
	
	A0 = 1;
	A1 = 1;
	PORTAB = data_D;
	_CS = 0;
//	Delay(1);
	_CS = 1;
//	Delay(1);
	
	R_W = 1;
	_LDAC = 1;
}

⌨️ 快捷键说明

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