单片机发音很短促,很急..几乎听不到"十"的发音了..很快跳转[sos]

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:32:07
如题.
知道你知道..
谢谢
ha^-^
嗯嗯.
是一个时钟的发音.读的是X时X秒X分.61单片机的;用自动播放播出的声音清晰缓慢;用手动播放播出的声音急促短暂,还有点爆的声音.= =|||很赶的样子.加了个延时:
PlaySnd_Manual(20,1);自动播放的.
for(i=0;i<=0xffff;i++);延时用的..?可惜起不了作用
PlaySnd_Manual(2,1);

你的问题太不清楚了,没办法回答

麻烦把问题想清楚,怎么表达,然后再问,顺便多给点悬赏,就有人回答你

问题补充写这里

调用的手动播音程序
unsigned int SP_GetResource(unsigned long ulAddr); //define of 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,status;

ulAddr = *(&RES_Table + (uiSndIndex<<1)); //获取要播放的语音的首地址
ulEndAddr = *(&RES_Table + (uiSndIndex<<1) + 1);//获取要播放的语音的结束地址

SACM_A2000_Initial(0); //播放的初始化,手动方式
SACM_A2000_InitQueue(); //初始化播放队列
SACM_A2000_InitDecoder(uiDAC_Channel); //初始化解码器
SP_RampUpDAC1(3);
SP_RampUpDAC2(3);

status = 1;
while(status)
{
while(SACM_A2000_TestQueue()!= 1) //播放队列是否为空
{
if(ulAddr >= ulEndAddr)
{
status = 0; //地址超出,则退出队列填充操作
break;
}