📄 rap.c
字号:
//======================================================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//========================================================================================
// 工程名称: dvr.spj
// 功能描述: SACM-DVR非自动方式录放音
//
// 文件来源: 《SPCE061单片机原理及应用技术》第七章 凌阳音频压缩算法,第295页
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: CMacro.lib/sacmv25.lib
//
// 组成文件: rap.c
// ISR.asm/hardware.asm
// hardware.inc/dvr.h
//
// 日期: 2002-6-12
//===========================================================================================
#define Manual 0
#define Auto 1
#define SRAM_Size 0xffff-2
#define Stop 0
#define Record 1
#define Play 2
#define RceMonitorOff 0
#define RceMonitorOn 1
#define DAC1 1
#define DAC2 2
#define Full 1
#define Empty 2
int main()
{
int Ret=0, Mode;
int Addr, Addr_Save;
Mode == Manual; //采用手动方式
SACM_DVR_Initial(Manual); //手动方式初始化
Addr = 0; //定义语音存放的首址变量
InitWriteSRAM();
SACM_DVR_InitEncoder(RceMonitorOn); //开始对A2000的语音数据以非自动方式编码
while(Addr<SRAM_Size) //判断存储语音的地址是否超出存储单元的大小
{
SACM_DVR_Encode (); //获取数据并编码
if(SACM_DVR_TestQueue()!= Empty)
{
Ret=SACM_DVR_FetchQueue(); // 从队列中获取数据
WriteSRAM(Addr,Ret); // 存入用户定义的存储单元区
Addr+=2; //两个8位SRAM存储一个16位数据
}
}
SACM_DVR_StopEncoder();
SACM_DVR_Initial(Manual); //非自动方式播放的初始化
InitReadSRAM();
Addr=0;
SACM_DVR_InitDecoder(DAC1); //开始对A2000的语音数据以非自动方式解码
while(1)
{
if(SACM_DVR_TestQueue()!=Full) //测试并获取语音队列的状态
{
Ret =ReadSRAM(Addr); //从存储区里获取一个字型语音资料
SACM_DVR_FillQueue(Ret); //获取语音编码资料并填入语音队列等候译码
Addr+=2;
}
if(Addr<SRAM_Size) //如果该段语音播完,即到达末地址时
SACM_DVR_Decode (); //获取资源并进行解码,再通过中断服务子程序送入DAC通道播放
else
SACM_DVR_StopDecoder(); //否则,停止播放
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -