?? main.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.
//========================================================
//========================================================
// 工程名稱: ex2_S480_Manual
// 功能描述: 《實驗指導書》語音部分第四個實驗
// 通過S480手動方式播放語音資源
// 涉及的庫: CMacro1016.lib
// SacmV26e.lib
// 組成文件: main.c
// hardware.asm,isr.asm
// hardware.inc,s480.inc
// s480.h
// 硬件連接: DAC短接,選擇音頻輸出
// 維護記錄: 2005-09-12 v1.0
//
//========================================================
//========================================================
// 文件名稱: main.c
// 功能描述: 通過手動方式播放語音資源
// 維護記錄: 2005-09-12 v1.0
//========================================================
#include "s480.h"
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
void PlaySnd_Manual(unsigned int SndIndex,unsigned int DAC_Channel);
//========================================================
// 語法格式: int main(void)
// 實現功能: 調用語音播放函數,通過手動方式播放語音資源
// 參數: 無
// 返回值: 無
//========================================================
int main(void)
{
while(1)
{
PlaySnd_Manual(0,3);
PlaySnd_Manual(1,3);
PlaySnd_Manual(2,3);
*P_Watchdog_Clear = 0x0001;
}
}
//========================================================
// 語法格式: void PlaySnd_Manual(unsigned int uiSndIndex,
// unsigned int uiDAC_Channel)
// 實現功能: 通過手動方式播放語音資源
// 參數: 1.uiSndIndex:語音資源序號
// 2.uiDAC_Channel:語音播放通道
// 返回值: 無
//========================================================
unsigned int SP_GetResource(unsigned long ulAddr); //在hardware.asm當中定義
void PlaySnd_Manual(unsigned int uiSndIndex,unsigned int uiDAC_Channel)
{
extern unsigned long RES_Table; //語音資源列表,在Resource.asm當中定義
unsigned long ulAddr,ulEndAddr;
unsigned int uiRet;
ulAddr = *(&RES_Table + (uiSndIndex<<1)); //獲取要播放的語音的首地址
ulEndAddr = *(&RES_Table + (uiSndIndex<<1) + 1);//獲取要播放的語音的結束地址
SACM_S480_Initial(0); //播放的初始化,手動方式
SACM_S480_InitQueue(); //初始化播放隊列
SACM_S480_InitDecoder(uiDAC_Channel); //初始化解碼器
while(1)
{
while(SACM_S480_TestQueue()!= 1) //播放隊列是否為空
{
if(ulAddr >= ulEndAddr) //地址超出,則退出隊列填充操作
{
break;
}
uiRet = SP_GetResource(ulAddr); //從存儲器當中獲取語音資源,在hardware.asm當中定義
SACM_S480_FillQueue(uiRet); //填充隊列
ulAddr++;
}
if((SACM_S480_Status()&0x0001)!=0) //當前還處到播放狀態,則進行解碼
{
SACM_S480_Decoder();
}
else
{
SACM_S480_Stop(); //否則,停止播放
break; //退出播放循環
}
*P_Watchdog_Clear = 1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -