}
}
PlayNum(TempMin); PlaySnd(S_Fen); break;
case KEY_3:
if(TempMin==0) TempMin = 59; else TempMin--; PlayNum(TempMin); PlaySnd(S_Fen); break;
// Key3,分钟数减1,到0后变为59
default:
break;
}
//============================================================= // 语法格式: unsigned int AdjustSec(unsigned int Sec); // 实现功能: 调整秒 // 参数: // 返回值:
Sec - 调整前的秒 调整后的秒
//============================================================= unsigned int AdjustSec(unsigned int Sec) {
unsigned int KeyCode; unsigned int TempSec = Sec;
PlaySec(TempSec); while(1)
// 播报调整前的秒数
33
}
{
*P_Watchdog_Clear = 0x01; KeyCode = Key_Get(); switch(KeyCode) { }
case KEY_1:
return TempSec;
// Key1,返回调整后的秒
case KEY_2:
TempSec++;
// Key2,秒加1,到59后变为0
if(TempSec>59) TempSec = 0; PlaySec(TempSec); break;
case KEY_3:
if(TempSec==0) TempSec = 59; else TempSec--; PlaySec(TempSec); break;
// Key3,秒减1,到0后变为59
default:
break;
}
//============================================================= // 语法格式: void Adjust(void); // 实现功能: 调整日期时间 // 参数: // 返回值:
无 无
34
//============================================================= void Adjust() { }
子程序:3
//======================================================
PlaySnd(S_DING);
// 播报调整后的日期时间
unsigned int TempYear, TempMon, TempDay, TempHour, TempMin, TempSec;
TempYear = AdjustYear(Clock_GetYear()); TempMon = AdjustMon(Clock_GetMon());
// 调整年 // 调整月
TempDay = AdjustDay(TempYear, TempMon, Clock_GetDay()); // 调整日 TempHour = AdjustHour(Clock_GetHour()); TempMin = AdjustMin(Clock_GetMin()); TempSec = AdjustSec(Clock_GetSec());
Clock_SetYear(TempYear); Clock_SetMon(TempMon); Clock_SetDay(TempDay); Clock_SetHour(TempHour); Clock_SetMin(TempMin); Clock_SetSec(TempSec);
// 保存调整后的日期时间
// 调整时 // 调整分 // 调整秒
PlayYear(TempYear); PlayMon(TempMon); PlayDay(TempDay); PlayHour(TempHour); PlayMin(TempMin);
35
// 文件名称: Clock_Speech.c
// 功能描述: 语音播报日期和时间的函数集 // 维护记录: 2006-08-30 v1.0
//======================================================
#include \#include \
//============================================================= // 语法格式: void PlayNum(unsigned int Num); // 实现功能: 播放100以内的数字 // 参数: // 返回值:
Num - 待播报的数字 无
//============================================================= void PlayNum(unsigned int Num) { }
unsigned int TempNum = Num;
if(TempNum==0)
PlaySnd(S_0);
// 数字为0则直接播报0
else { }
if(TempNum>=20) PlaySnd(TempNum/10); if(TempNum>=10) PlaySnd(S_10); TempNum = TempNum % 10;
if(TempNum>0) PlaySnd(TempNum);
// 个位
// 十位 // \十\
36
//============================================================= // 语法格式: void PlayYear(unsigned int Year); // 实现功能: 播报年 // 参数: // 返回值:
Year - 待播报的年 无
//============================================================= void PlayYear(unsigned int Year) { }
//============================================================= // 语法格式: void PlayMon(unsigned int Mon); // 实现功能: 播报月 // 参数: // 返回值:
Mon - 待播报的月 无
unsigned int TempYear = Year;
PlaySnd(TempYear/1000);
// 千位
TempYear = TempYear % 1000; PlaySnd(TempYear/100); TempYear = TempYear % 100; PlaySnd(TempYear/10); TempYear = TempYear % 10; PlaySnd(TempYear); PlaySnd(S_Nian);
// 个位 // \年\
// 十位
// 百位
//============================================================= void PlayMon(unsigned int Mon)
37