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

📄 rap.asm

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

#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 = Auto;						 //选择自动方式录放音
	  Mode = Manual;					     //选择手动方式录放音 
	
	

 	
		
 if(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位数据
		}
				Addr_Save = Addr;			//将存储语音数据的末地址暂存于Add_Save
	}					 
				SACM_DVR_StopEncoder();
	 						 
	
	SACM_DVR_Initial(Manual);				//非自动方式播放的初始化
	
	InitReadSRAM();
 
	Addr=0;
    
    SACM_DVR_InitDecoder(DAC1);			//开始对A2000的语音数据以非自动方式解码
  	
while(SACM_DVR_TestQueue()!=Full)		//测试并获取语音队列的状态
   	 {
	   Ret=ReadSRAM(Addr);				//从存储区里获取一个字型语音数据
       SACM_DVR_FillQueue(Ret);			//获取语音编码数据并填入语音队列等候解码
       Addr+=2;
	  }
     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 + -