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

📄 main.c

📁 羚羊单片机的手动播放程序
💻 C
字号:
//======================================================
//  The information contained herein is the exclusive property of
//  Sunnnorth Technology Co. And shall not be distributed, reproduced,
//  or disclosed in whole in part without prior written permission.
//          (C) COPYRIGHT 2003  SUNNORTH TECHNOLOGY CO.
//                       ALL RIGHTS RESERVED
//  The entire notice above must be reproduced on all authorized copies.
//========================================================

//============================================================
//  工程名称:A2000_manual.scs
//  功能描述:凌阳A2000语音播放方式有自动语音播放和播放两种,此范例为手动语音播放。
//       
//  文件来源:电子竞赛专集---A2000手动语音播放
//     
//  IDE环境:   SUNPLUS u'nSPTM  IDE 1.8.0
//
//  涉及的库:
//         SACMV25.lib
//  组成文件:
//          hardware.asm//          
//    	    isr.asm       
//          A2000.inc
//          A2000.h       
//          
//  日期:          2003-7-7
//===============================================
//============================================================
// 文件名称:main.c
// 实现功能:利用A2000格式手动语音循环播放
// 日期: 2003/7/7
//============================================================
#include "a2000.h"

#define		SPEECH_1		1
#define		DAC1			1
#define		DAC2			2
#define		Ramp_UpDn_Off	0
#define		Ramp_UpDn_On	3
#define		Manual			0
#define		Auto			1
#define		Full			1
#define		Empty			2
extern   RES_A32_16K_A20_SA;
extern   RES_A32_16K_A20_EA;
int main(){
	int iMode;
	int iAddr;
	int iRet;
	iMode =  Manual;
	iAddr = RES_A32_16K_A20_SA;             //送入语音队列的首址
	if(iMode == 	Manual)					//采用非自动方式播放
    {	
	   		    
	   SACM_A2000_Initial(iMode);			//非自动方式播放的初始化,来自sacmv25.lib
       SACM_A2000_InitDecoder(DAC1);		//开始对A2000的语音数据以非自动方式解码 ,来自sacmv25.lib	  
      while(1)
	  {
	  if(SACM_A2000_TestQueue()!=Full)      //测试并获取语音队列的状态,来自sacmv25.lib
		{
		iRet =SP_GetResource(iAddr);        //从资源文件里获取一个字型语音数据,来自sacmv25.lib
	    SACM_A2000_FillQueue(iRet);         //获取语音编码数据并填入语音队列等候解码,来自sacmv25.lib
	    iAddr++;
    	}
        if(iAddr< RES_A32_16K_A20_EA )	    //如果该段语音未播完,即未到达末地址时
            SACM_A2000_Decoder();			//获取资源并进行解码,再通过中断服务子程序送入DAC通道播放,来自sacmv25.lib
        else{
           SACM_A2000_InitDecoder(DAC1);	//否则,开始对A2000的语音数据以非自动方式解码 ,  来自sacmv25.lib
           iAddr = RES_A32_16K_A20_SA;      //送入语音队列的首址
        }
     }  
   }
}

⌨️ 快捷键说明

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