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

📄 ad.h

📁 LF2407的各个模块的测试程序,包含2407里面的所有模块,均已经调试通过,心血所致,希望对大家有所帮助.
💻 H
字号:
void AD_Init()
{
	*ADCTRL1 = 0x10;
	*ADCTRL2 = 0x8404;
	*MAXCONV = 0x0F;
	*CHSELSEQ1 = 0x3210;
	*CHSELSEQ2 = 0x7654;
	*CHSELSEQ3 = 0x0BA98;
	*CHSELSEQ4 = 0x0FEDC;
}

//AD数字滤波子程序
void AD_Digital_Filter(UINT * AD0,UINT * AD1,UINT * AD3,UINT * AD6,UINT count)//count取值为3~255
{
	UINT 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=AD_result[0];
		
		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=AD_result[8];
		
		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=AD_result[13];
		
		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=AD_result[14];
		
		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 = AD0_data;
	*AD1 = AD1_data;
	*AD3 = AD3_data;
	*AD6 = AD6_data;
}

void interrupt ADC_INT()
{	
	asm(" clrc SXM");
	AD_j = RESULT0;
	for(AD_i=0;AD_i<16;AD_i++,AD_j++)
	{
		AD_result[AD_i] = *AD_j>>6;		 
	}
	*ADCTRL2 = *ADCTRL2 | 0x4200;
	
	AD_BRK = AD_result[8];
	AD_ACC = AD_result[0];
	ADIN_3 = AD_result[11];
	ADIN_5 = AD_result[13];
	ADIN_6 = AD_result[14];
	
	asm(" clrc INTM");
}

⌨️ 快捷键说明

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