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

📄 sound.c

📁 以SPCE061A单片机为核心
💻 C
字号:
#include "s480.h"
#include "bit.h"
#define P_UART_Command2			(volatile unsigned int *)0x7022 
void PlaySnd(int SndIndex, int DAC_Channel)
{
	extern unsigned long RES_Table;
	unsigned long Addr,EndAddr;
	unsigned int Ret,Status;
    *P_UART_Command2 =0x00;
	Addr = *(&RES_Table + (SndIndex<<1));		//获得语音资源的首地址
	EndAddr = *(&RES_Table + (SndIndex<<1) + 1);//获得语音资源的末地址

	SACM_S480_Initial(0);						//初始化为手动播放
	SACM_S480_InitQueue();						//初始化解码队列
	SACM_S480_InitDecoder(DAC_Channel);			//初始化解码算法
//	*(unsigned int*)0x7013 = 0x08;	
	while(1)									//播放循环
	{
		*(unsigned int*)0x7012 = 1;	
		while(SACM_S480_TestQueue()!=1)			//如果解码队列未满
		{
	    	*(unsigned int*)0x7012 = 1;	
	    	if(Addr>=EndAddr)					//如果访问到尾地址则停止获取数据
	    	{
	    		break;
	    	}
			Ret = SP_GetResource(Addr);			//获取数据
			SACM_S480_FillQueue(Ret);			//填充到解码队列中
	    	Addr++;
    	}
		if(SACM_S480_Status()&0x01)				//如果未播放完毕
		{
        	SACM_S480_Decoder();				//数据解码
		}
        else
        {
        	SACM_S480_Stop();					//停止播放
        	*P_UART_Command2 =0xc0;
    //    	*(unsigned int*)0x7013 = 0x88;
    		break;								//结束播放
        }
     }  	
}

void Word2Str(Uint It,Uint *str,Uint In) 
{
	//Uint Ia[5];
	Uint Ii, Ij;
	*(unsigned int*)0x7012 = 1;
	str[0]=(It/10000)%10;
	str[1]=(It/1000)%10;
	str[2]=(It/100)%10;
	str[3]=(It/10)%10;
	str[4]=(It/1)%10;
}

⌨️ 快捷键说明

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