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

📄 firlms.c

📁 ICETEK-LF2407-A板和教学实验箱使用说明书及开发板的所有实验例程
💻 C
字号:
#include "2407c.h"
#include"math.h"

#define PI 3.1415926
#define COEFFNUMBER 16
#define INPUTNUMBER 1024
int uWork;
int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber);

float h[COEFFNUMBER],fU;
int xx[INPUTNUMBER],rr[INPUTNUMBER],wc[INPUTNUMBER];


void ICETEKLF2407AInit()
{
	asm(" setc INTM");
	(*PIRQR0)=0;
	uWork=(*WSGR);
	uWork&=0x0fe49;
	(*WSGR)=uWork;
	*WDCR=0x6f;
	*WDKEY=0x5555;
	*WDKEY=0xaaaa;    
	*SCSR1=0x81fe;    //40m      
	(*MCRB)&=0x0ffbf;	/* CANTX/IOPC6 for normal I/O port ,sound*/
	uWork=(*MCRC);
	uWork&=0x0ffbf;	/* PWM12/IOPE6 for normal I/O port ,led*/
	uWork&=0x0efdf;	/* PWM11/IOPE5,TDIR2/IOPF4 for normal I/O ports */
	(*MCRC)=uWork;
	*T1CON   = 0x1300;
	*IFR=0xffff;
	*IMR=0;
}

main()
{
	int i,nLastOutput;
	ICETEKLF2407AInit();
	nLastOutput=0;
	fU=0.0003;
	for ( i=0;i<COEFFNUMBER;i++ )	h[i]=0;
	for ( i=0;i<INPUTNUMBER;i++ )
	{
		xx[i]=256*sin(i*2*PI/34);
		rr[i]=wc[i]=0;
	}
	for ( i=COEFFNUMBER+1;i<INPUTNUMBER;i++ )
	{
		nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1],COEFFNUMBER);	// break point
		rr[i]=nLastOutput;
		wc[i]=rr[i]-xx[i];
	}
	exit(0);
}

int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber)
{
	int i,r;
	float fWork;
	
	r=0;
	for ( i=0;i<nCoeffNumber;i++ )
	{
		fWork=nx[i]*nError*fU;
		nh[i]+=fWork;
		r+=(nx[i-i]*nh[i]);
	}
	r/=128;
	return r;
}

⌨️ 快捷键说明

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