📄 speak.c
字号:
//=========================================================//
//文件名称:speak.c
//功能描述:日期和时间的语音播报
//维护记录:2006.7.31 by zhenlei
//========================================================//
#include "SPCE061A.h"
#include "s480.h"
#define C_T00 0
#define C_T01 1
#define C_T02 2
#define C_T03 3
#define C_T04 4
#define C_T05 5
#define C_T06 6
#define C_T07 7
#define C_T08 8
#define C_T09 9
#define C_T10 10
#define C_DIAN 11
#define C_MIN 12
#define C_YEAR 13
#define C_MONTH 14
#define C_DAY 15
#define C_BELL 16
extern unsigned int year;
extern unsigned int gmonth;
extern unsigned int gday;
extern unsigned int hour;
extern unsigned int min;
//================================================================//
//语法格式:PlayRespond(unsigned int Result)
//实现功能:播放提示语音,对对传入的实参序号的语音资源进行播报
//参 数:unsigned int Ressult:传入的语音资源的序号
//返 回 值:无
//================================================================//
void PlayRespond(unsigned int Result)
{
SACM_S480_Initial(1);
*P_INT_Ctrl_New = *P_INT_Ctrl_New | 0x0004; //使初始化后不影响2KZ中断
SACM_S480_Play(Result,3,3);
while((SACM_S480_Status()&0x0001) != 0)
{
SACM_S480_ServiceLoop();
*P_Watchdog_Clear=0x0001;
}
SACM_S480_Stop();
}
//================================================================//
//================================================================//
//语法格式:PlaySpeakYear(int YearTemp)
//实现功能:播报年
//参数 :int YearTemp:年
//返回值 :无
//===============================================================//
void PlaySpeakYear(int YearTemp)
{
PlayRespond((YearTemp/1000));
PlayRespond((YearTemp%1000)/100);
PlayRespond((YearTemp%100)/10);
PlayRespond((YearTemp%10));
PlayRespond(C_YEAR);
}
//===============================================================//
//语法格式:PlaySpeakMonth(int MonthTemp)
//实现功能:播报月
//参数 :int MonthTemp:月
//返回值 :无
//==============================================================//
void PlaySpeakMonth(int MonthTemp)
{
if(MonthTemp<10)
PlayRespond(MonthTemp);
else if(MonthTemp==10)
PlayRespond(C_T10);
else if(MonthTemp==11)
{
PlayRespond(C_T10);
PlayRespond(C_T01);
}
else if(MonthTemp==12)
{
PlayRespond(C_T10);
PlayRespond(C_T02);
}
PlayRespond(C_MONTH);
}
//===============================================================//
//语法格式:PlaySpeakDay(int DayTemp)
//实现功能:播报日
//参数 :int DayTemp:日
//返回值 :无
//==============================================================//
void PlaySpeakDay(int DayTemp)
{
if((DayTemp/10)> 1)
PlayRespond(DayTemp/10+C_T00); //十位>1报
if((DayTemp/10)>0)
PlayRespond(C_T10); //报十,十位为1不报1
if((DayTemp%10)!= 0)
PlayRespond(DayTemp%10+C_T00);
PlayRespond(C_DAY);
}
//===============================================================//
//语法格式:PlaySpeakHour(int DayTemp)
//实现功能:播报时
//参数 :int DayTemp:小时
//返回值 :无
//==============================================================//
void PlaySpeakHour(int DayTemp)
{
if(DayTemp<10)
PlayRespond(DayTemp);
else if(DayTemp==10)
PlayRespond(C_T10);
else if(DayTemp>10 && DayTemp<20)
{
PlayRespond(C_T10);
PlayRespond(DayTemp%10);
}
else if(DayTemp==20)
{
PlayRespond(C_T02);
PlayRespond(C_T10);
}
else if(DayTemp>20)
{
PlayRespond(C_T02);
PlayRespond(C_T10);
PlayRespond(DayTemp%20);
}
PlayRespond(C_DIAN); //点
}
//===============================================================//
//语法格式:PlaySpeakMinute(int MinTemp)
//实现功能:播报分
//参数 :int MinTemp:分
//返回值 :无
//==============================================================//
void PlaySpeakMinute(int MinTemp)
{
if(MinTemp==0)
PlayRespond(C_T00);
if((MinTemp/10)>1)
PlayRespond(MinTemp/10); //分的十位
if((MinTemp/10) >0)
PlayRespond(C_T10); //分的十位大于1报,为1不报1
if((MinTemp%10)!=0)
PlayRespond(MinTemp%10); //分的个位不为0则报
PlayRespond(C_MIN); //分
}
//==============================================================//
//语法格式:void speaktime()
//实现功能:播报当前的时间
//参数 :无
//返回值 :无
//==============================================================//
void speaktime()
{
PlayRespond(C_BELL); //报时声
PlaySpeakHour(hour); //时
PlaySpeakMinute(min); //分
}
//==============================================================//
//语法格式:void speakday()
//实现功能:播报当前的日期
//参数 :无
//返回值 :无
//=============================================================//
void speakday()
{
PlaySpeakYear(year);
PlaySpeakMonth(gmonth);
PlaySpeakDay(gday);
}
//=============================================================//
//speak.c end
//=============================================================//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -