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

📄 speech.c

📁 凌阳单片机对语音的处理和调用
💻 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 + -