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

📄 test.c

📁 该代码采用c5400dsp的汇编语言和c语言实现语音adpcm压缩与解压的程序
💻 C
字号:
// CCS2.1下测试通过


// 定义数据存储结构

typedef struct
{
	int  PrevValue;  // 前一次转换时的数据
	int  PrevIndex;  // 前一此转换时使用的索引
	int  Length;     // 转换数据长度
	int* pBufferIn;  // 输入缓冲区地址
	int* pBufferOut; // 输出缓冲区地址
}ADPCM_STRUCT;

ADPCM_STRUCT AdpcmState;
// 编码函数申明
extern void AdpcmEncoder(int* pBufferIn,  int* pBufferOut, 
					     int* pPrevValue, int* pPrevIndex, int Length);
// 解码函数申明					    					     
extern void AdpcmDecoder(int* pBufferIn,  int* pBufferOut, 
					     int* pPrevValue, int* pPrevIndex, int Length);

int i,BufferIn[80],BufferOut[20];


#define TEST_VALUE 100

void main(void)
{
	asm(" STM #0,SWWSR");
	
	for(i=0; i<40; i++)
	{
		BufferIn[i] = i*TEST_VALUE;
	}
	for(i=40; i<80; i++)
	{
		BufferIn[i] = (80-i)*TEST_VALUE;
	}
	for(i=0; i<20; i++)
	{
		BufferOut[i] = 0; 
	}
	
	AdpcmState.PrevValue = 0;
	AdpcmState.PrevIndex = 0;
	AdpcmState.Length = 80;
	AdpcmState.pBufferIn = BufferIn;
	AdpcmState.pBufferOut = BufferOut;
	AdpcmEncoder(AdpcmState.pBufferIn, AdpcmState.pBufferOut, 
				 &AdpcmState.PrevValue, &AdpcmState.PrevIndex,
				 AdpcmState.Length);
	AdpcmState.PrevValue = 0;
	AdpcmState.PrevIndex = 0;
	AdpcmState.Length = 20;
	AdpcmState.pBufferIn = BufferOut;
	AdpcmState.pBufferOut = BufferIn;
	AdpcmDecoder(AdpcmState.pBufferIn, AdpcmState.pBufferOut, 
				&AdpcmState.PrevValue, &AdpcmState.PrevIndex,
				AdpcmState.Length);
}

⌨️ 快捷键说明

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