📄 sound.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 + -