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

📄 main.c

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 C
字号:
//*******************************************************************************************/
// 名称: dvr
// 来源:《SPCE061A单片机原理及应用技术》,"第七章程序7_10"
// 描述: DVR有两种录放音方式,即自动方式和非自动方式,我们可以通
//        过改变Mode的值来切换这两种方式:当Mode=0时以非自动方式录放音,
//        当Mode=1时,以自动方式录放音,而且中断中分别用FIQ中断实现语音的
//        播放,用IRQ1中断实现语音的录制。这里我们给出非自动方式的例子:
// 日期: 2002/12/11
//*******************************************************************************************/
#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

//=============================================================================================== 
// 函数: main()
// 描述:主函数
//============================================================================================
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();			//否则,停止播放
     }  
  }
  
//*******************************************************************************************/
// void SACM_ DVR _Initial(int Init_Index); 来自于sacmv25.lib,API接口函数。SACM_ DVR语音播放
//     之前的初始化:设置中断源、定时器以及播放方式(自动、手动);Init_Index=0 表示手动方式;
//     Init_Index=1 则表示自动方式,无返回值。
// void SACM_DVR_Encode(void);来自于acmv25.lib,API接口函数。开始以自动方式录制声音资料到外接
//     SRAM中。无入口出口参数。         
// void SACM_DVR_InitDecode(int Channel); 来自于sacmv25.lib,API接口函数。开始对SACM_DVR语音
//     资料以非自动方式(编程控制)进行译码。Channel=1,2,3;分别表示使用DAC1、DAC2信道以及
//     DAC1和DAC2双通道;无返回值。
// SACM_DVR_StopDecoder(); 来自于sacmv25.lib,API接口函数。无出口入口参数。
// SP_GetResource(Addr);来自于Hardware.asm,F_SP_GetCh.从资源文件里获取一个字型语音数据
// main.c 结束
//*******************************************************************************************/				 
 

			 
 

⌨️ 快捷键说明

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