📄 speech.c
字号:
//========================================================
// 文件名称: Speech.c
// 功能描述: 语音功能代码
// 维护记录: 2006-4-13 build
// 2006-4-20 加入Too_Freq变量,用以控制语音报警间隔时间
//========================================================
//========================================================
#include "SPCE061A.h"
#include "S480.h"
extern void Save_INTSetting(void); //定义在isr.asm
extern unsigned int F_Binary_BCD(unsigned int Binary);
unsigned int Counter_2Hz = 10; //2Hz中断用的计数器,用于语音播放控制
extern unsigned int Too_Freq;
//=======================================================================
// 语法格式: void PlaySnd_Auto(unsigned int uiSndIndex,
// unsigned int uiDAC_Channel)
// 实现功能: 通过自动方式播放语音资源
// 参数: 1.uiSndIndex:语音资源序号 2.uiDAC_Channel:语音播放通道
// 返回值: 无
//=======================================================================
void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel)
{
//if(Counter_2Hz>14) //如果此数大于6,则表示距上次语音播报超过了3秒了
//{
//Counter_2Hz = 0; //计数器清零
//*P_INT_Ctrl = *P_INT_Ctrl_New|0x0008; //重新打开IRQ5的2Hz中断
Save_INTSetting(); //保存当前中断设置,并通知语音库当前开放的中断
SACM_S480_Initial(1); //初始化语音播放,自动方式
SACM_S480_Play(uiSndIndex,uiDAC_Channel,3); //播放语音
while((SACM_S480_Status() & 0x0001) != 0) //判断当前是否在播放?返回最低位为1则表示当前在播放
{
SACM_S480_ServiceLoop(); //服务程序
*P_Watchdog_Clear = 0x0001;
}
SACM_S480_Stop(); //停止
//}
}
//=============================================================
// 函数名称: Speech_Result()
// 功能描述: 对测量得到的数据进行语报:X点XX米
// 同时还要存贮测量值(存放在Flash)中
// 语法格式: void Speech_Result(unsigned int uiResult)
// 入口参数: uiResult---要用语音报的结果
// 出口参数: 无
// 注意事项: 仅为用户模型
//=============================================================
void Speech_Result(unsigned int uiResult,unsigned int Direction)
{
if(Counter_2Hz>Too_Freq)//Too_Freq
{
unsigned int uiResult_BCD;
unsigned int uiTemp;
PlaySnd_Auto(Direction,3);
uiResult_BCD = F_Binary_BCD(uiResult);
uiTemp = (uiResult_BCD>>8)&0x000f;
PlaySnd_Auto(uiTemp,3);
PlaySnd_Auto(10,3); //语音"点"
uiTemp = (uiResult_BCD>>4)&0x000f;
PlaySnd_Auto(uiTemp,3);
uiTemp = uiResult_BCD&0x000f;
PlaySnd_Auto(uiTemp,3);
PlaySnd_Auto(11,3); //语音"米"
Counter_2Hz = 0; //计数器清零
*P_INT_Ctrl = *P_INT_Ctrl_New|0x0008; //重新打开IRQ5的2Hz中断
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -