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

📄 playsnd.c

📁 此程序为出租车计价器
💻 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 + -