📄 playsnd.c
字号:
//======================================================
// 文件名称: PlaySnd.c
// 功能描述: S480播放程序
// 维护记录: 2006-10-12 v1.0 by lijian
//======================================================
#include "PlaySnd.h"
#include "SetInterruptStatus.h"
unsigned int g_PlayStatus; // 播放状态标志
//========================================================================
// 语法格式: void SetPlayService()
// 实现功能: 启动播放服务(打开4096Hz时基中断,并设置R_InterruptStatus变量)
// 参数: 无
// 返回值: 无
//========================================================================
void SetPlayService()
{
*P_INT_Clear = C_IRQ4_4KHz; // 打开4096时基中断
SetINTStatus(C_IRQ4_4KHz);
}
//========================================================================
// 语法格式: void ClearPlayService()
// 实现功能: 停止播放服务(关闭4096Hz时基中断,并设置R_InterruptStatus变量)
// 参数: 无
// 返回值: 无
//========================================================================
void ClearPlayService()
{
*P_INT_Clear = C_IRQ4_4KHz;
ClearINTStatus(C_IRQ4_4KHz);
}
//========================================================================
// 语法格式: void PlaySnd(unsigned int SndIndex, unsigned int WaitMode)
// 实现功能: 初始化并开始S480播放
// 参数: SndIndex - 语音资源序号
// Wait - 等待模式
// NO_WAIT : 立即启动此次播放
// WAIT_SELF_END : 等待此次播放完毕后退出
// WAIT_OTHER_END : 等待正在播放的语音结束后启动此次播放
// 返回值: 无
//========================================================================
void PlaySnd(unsigned int SndIndex, unsigned int WaitMode)
{
if(0 != (WaitMode & WAIT_OTHER_END))
{
while(C_NullState != g_PlayStatus);
}
ClearPlayService();
SACM_S480_Stop();
SACM_S480_Initial(1);
SACM_S480_Play(SndIndex, 3, 3);
g_PlayStatus = C_PlayState;
SetPlayService();
if(0 != (WaitMode & WAIT_SELF_END))
{
while(C_NullState != g_PlayStatus);
ClearPlayService();
}
}
//========================================================================
// 语法格式: void SetPlayStatus(unsigned int Status)
// 实现功能: 设置当前播放状态
// 参数: Status - 播放状态
// C_NullState(0) : 播放结束(空闲状态)
// C_PlayState(1) : 正在播放
// 返回值: 无
//========================================================================
void SetPlayStatus(unsigned int Status)
{
g_PlayStatus = Status;
}
//========================================================================
// 语法格式: unsigned int GetPlayStatus()
// 实现功能: 得到当前播放状态
// 参数: 无
// 返回值: C_NullState(0) : 播放结束(空闲状态)
// C_PlayState(1) : 正在播放
//========================================================================
unsigned int GetPlayStatus()
{
return(g_PlayStatus);
}
//========================================================================
// 语法格式: void IRQ_PlayService()
// 实现功能: 后台解码播放函数(需要安置在4096Hz时基中断中)
// 参数: 无
// 返回值: 无
//========================================================================
void IRQ_PlayService()
{
if(C_PlayState == g_PlayStatus)
{
if((SACM_S480_Status()&0x0001) != 0)
{
SACM_S480_ServiceLoop();
}
else
{
g_PlayStatus = C_NullState;
SACM_S480_Stop();
ClearPlayService();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -