逆变换波形
七、源程序代码
1主程序
//********************************************************* #include \#include
//********************************************************* #define pi 3.1415927 #define Len 128
//----------------------------------------------------------- void dct1c2 (double x[Len], double y[Len]); void idct1c2 (double y[Len], double z[Len]);
11
//-----------------------------------------------------------
double x[Len],y[Len],z[Len],temp[Len]; int in_x[Len]; int m = 0;
int intnum = 0; double xmean=0; int i=0; int flag = 0;
/**********************************************************/ void main() { unsigned int ii;
//----------------------------------- initial_sys(); mcbsp2_close(); asm(\
initial_aic23(); delayMs_SYS(1); mcbsp2_init();
mcbsp2_open();
//------------------------------------ while(1) { for(ii=0;ii!=Len;ii++) { mcbsp2_read_rdy(); //read_data2 = DRR2_2; in_x[ii] = DRR1_2; } { xmean = 0.0; for (i=0; i 12 { x[i] = (double)(in_x[i] - xmean); } dct1c2 (x,y); idct1c2 (y,z); } m=0; //设置断点 m=0; } } //---------------------------------------------------------- void dct1c2 (double x[Len], double y[Len]) { double s,t; int i,j; s=0.0; for (i=0; i for (i=1; i y[0]=s/(sqrt(Len/1.0)); } void idct1c2(double y[Len], double z[Len]) { double t; int i,j; for (i=0; i 13 for (j=0; j /***************** end *************************************/ /***************** end *************************************/ 2、aic_23芯片程序 //-------------------------------------------------------- #include \#include \ unsigned int cpld_ctrl_back = 0xe7; //-------------------------------------------------------- #define AIC23_ADDR 0x34 extern void delayMs_SYS(unsigned int msecond); extern void delayUs_SYS(unsigned int usecond); extern void mcbsp2_init(void); extern void mcbsp2_write_rdy(unsigned int out_data1,unsigned int out_data2);//MCBSP1发送一个数据32位 extern void mcbsp2_read_rdy(void); extern void mcbsp2_open(void); extern void mcbsp2_close(void); extern void Delay(int numbers); /****************************************************************/ //------------------------------------------------------------- void mcbsp2_init(void) { SPCR1_2 = 0; SPCR2_2 = 0; delayUs_SYS(10); RCR1_2 = 0x00A0; RCR2_2 = 0x00A0; XCR1_2 = 0x00A0; XCR2_2 = 0x00A0; PCR2 = 0x000D; 14 } void mcbsp2_write_rdy(unsigned int out_data1,unsigned int out_data2) { while ((SPCR2_2 & 0x0002) == 0); DXR2_2 = out_data2; DXR1_2 = out_data1; } void mcbsp2_read_rdy(void) { while((SPCR1_2 & 0x0002) == 0); } void mcbsp2_open() { SPCR1_2 = SPCR1_2 | 0x0001; SPCR2_2 = SPCR2_2 | 0x0001; } void mcbsp2_close() { SPCR1_2 = SPCR1_2 & 0xFFFE; SPCR2_2 = SPCR2_2 & 0xFFFE; } //---------------------------------------------------------------- void AIC23_CLK(unsigned int flag) { if(flag ==0) cpld_ctrl_back &= ~B5_MSK; else cpld_ctrl_back |= B5_MSK; CPLD_CTRL_REG = cpld_ctrl_back; } void AIC23_DIN(unsigned int flag) { if(flag ==0) cpld_ctrl_back &= ~B6_MSK; else cpld_ctrl_back |= B6_MSK; CPLD_CTRL_REG = cpld_ctrl_back; } void AIC23_DIN_EN(unsigned int flag) { 15