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

📄 rap.c

📁 凌阳单片机的语音程序6
💻 C
字号:
//***********************************************************
// Note: DVR有两种录放音方式,即自动方式和非自动方式,我们可以通
// 过改变Mode的值来切换这两种方式:当Mode=0时以非自动方式录放音,
// 当Mode=1时,以自动方式录放音,而且中断中分别用FIQ中断实现语音的
// 播放,用IRQ1中断实现语音的录制。这里我们给出非自动方式的例子:
// DATA:2003/05/14
// IDE: 1.8.0
//*************************************************************

#define Manual	0
#define	Auto	1

#define	SRAM_Size	0xffff-2


#define	RceMonitorOff	0
#define	RceMonitorOn	1

#define	DAC1	1	
#define	DAC2	2

#define	Full	1
#define	Empty	2

int main()
{
	int Ret=0; 
	int Addr;  

	
  
	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();			//否则,停止播放
     }  
      F_ClearWatchdog();                   //清看门狗
}			 
 

⌨️ 快捷键说明

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