?? a2000.c
字號:
//***********************************************************
// 來源:《SPCE061實驗指導書》語音實驗部分 實驗一 SACM-A2000
// 描述: A2000有兩種播放方式,即自動方式和非自動方式,我們可以通
// 過改變Mode的值來切換這兩種方式:當Mode=0時以非自動方式播放,
// 當Mode=1時,以自動方式播放。
// 日期:2003/05/14
// 版本:1.8.0
//*************************************************************
//#define SPEECH_1 0
#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
#define Mode 1
#include "A2000.h"
main()
{
extern long RES_WW_24K_SA,RES_WW_24K_EA; //定義語音資源的首末地址標號
long int Addr; //定義地址變量
int Ret = 0,SPEECH_1=0; //定義獲取語音數據變量并初始化
if(Mode == 1)
{
while(1) //采用自動方式播放
{
SACM_A2000_Initial(1); //自動方式播放初始化
SACM_A2000_Play(SPEECH_1,DAC1+DAC2,Ramp_UpDn_On); //定義語音索引號、播放通道、允許音量增/減調節
while(SACM_A2000_Status()&01)
{
F_ClearWatchdog();
SACM_A2000_ServiceLoop();
}
SPEECH_1++;
if(SPEECH_1==2) //獲取語音數據并將其填入解碼隊列
SPEECH_1=0;
}
}
if(Mode == 0) //采用非自動方式播放
{
Addr=RES_WW_24K_SA;
//送入語音隊列的首址
SACM_A2000_Initial(0); //非自動方式播放的初始化
SACM_A2000_InitDecoder(DAC1); //開始對A2000的語音數據以非自動方式解碼
while(SACM_A2000_TestQueue()!=Full) //測試并獲取語音隊列的狀態
{
Ret=SP_GetResource(Addr); //從資源文件里獲取一個字型語音數據
SACM_A2000_FillQueue(Ret); //獲取語音編碼數據并填入語音隊列等候解碼
Addr++;
}
while(1)
{
if(SACM_A2000_TestQueue()!=Full)
{
Ret =SP_GetResource(Addr);
SACM_A2000_FillQueue(Ret);
Addr++;
}
if(Addr< RES_WW_24K_EA ) //如果該段語音未播完,即未到達末地址時
SACM_A2000_Decoder(); //獲取資源并進行解碼,再通過中斷服務子程序送入DAC通道播放
else
SACM_A2000_Stop(); //否則,停止播放
F_ClearWatchdog(); //清看門狗
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -