📄 speech.c
字号:
#include "a1600.h"
//库函数
extern void T_SACM_DVR1600_ServiceLoop(void); //---在汇编中调用解码库函数
extern unsigned int T_SACM_DVR1600_Status(void);//---在汇编中调用播放状态库函数 返回播放状态
extern void T_SACM_DVR1600_Volume(U16 volume); //---在汇编中调用改变音量库函数
extern void T_SACM_DVR1600_Pause(void); //---在汇编中调用暂停播放库函数
extern void T_SACM_DVR1600_Resume(void); //---在汇编中调用继续播放库函数
extern void T_Stop_Play(void);
//调用汇编函数
extern U16 InilSpeech(U16 volume,U16 Song_Index);//---语音播放初始化 入口:音量(0-3)和歌曲索引 出口:无
extern U16 FillRamBuf(); //---手动模式下填写播放内容 入口:无 出口:无
//C语言中的函数
U16 PlaySpeech(U16 Volume,U16 SongIndex); //---语音播放子程序 入口:音量(0-3)和歌曲索引 出口:无
U16 KeyValue(void); //---语音播放子程序 入口:音量(0-3)和歌曲索引 出口:无
U16 StatusData;
U16 toteldata;
U16 data1,data2,data3,data4;
U16 VolumeValue; //音量应该是个全局变量
//-------------------------
//功能:模拟键盘函数取得处理好的键值
//入口:无
//出口:处理过的键值
//-------------------------
U16 KeyValue(void)
{
data1+=1;
if (data1>=0x5f53)
{
data1=0;
data2+=1;
}
return data2;
}
//----------------------------
//功能:总的语音播放子程序
//入口:Volume(音量0--3) SongIndex(歌曲索引)
//出口:无
//----------------------------
U16 PlaySpeech(U16 Volume,U16 SongIndex)
{
U16 key_value=0,bit_exit=00;
InilSpeech(SongIndex,Volume); //---语音播放初始化 入口:音量(0-3)和歌曲索引 出口:无
T_SACM_DVR1600_Status(); //---在汇编中调用播放状态库函数 返回播放状态
while((StatusData&0x03)!=0x00)
{
// key_value=KeyValue();
// key_value=0;
// switch (key_value)
// {
// //---加大音量
// case 0:
// if (VolumeValue<15)
// VolumeValue+=1;
// T_SACM_DVR1600_Volume(VolumeValue);
// break;
// //---减小音量
// case 1:
// if(VolumeValue>0)
// VolumeValue-=1;
// T_SACM_DVR1600_Volume(VolumeValue);
// break;
// //---暂停播放
// case 2:
// T_SACM_DVR1600_Pause();
// break;
// //---继续播放
// case 3:
// T_SACM_DVR1600_Resume();
// break;
// //---有非音量键按下退出等待键盘处理
// case 4:
// bit_exit=0x55;
// break;
// default:
// data2=0;
// break;
// }
// if (bit_exit==0x55)
// break;
T_SACM_DVR1600_ServiceLoop(); //---在汇编中调用解码库函数
bit_exit++;
if(bit_exit == 65000)
key_value++;
FillRamBuf(); //---手动模式下填写播放内容 入口:无 出口:无
T_SACM_DVR1600_Status(); //---在汇编中调用播放状态库函数 返回播放状态
}
//---播放结束后复位一些用到的寄存器
key_value=toteldata;
T_Stop_Play();
}
int main()
{
U16 i;
VolumeValue=10;
data1=0;data2=0;
for (i=0;i<57;i++)
{
PlaySpeech(VolumeValue,i);
}
PlaySpeech(1,1);
while(1) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -