?? clock_adjust.c
字號(hào):
//======================================================
// 文件名稱: Clock_Adjust.c
// 功能描述: 調(diào)整日期和時(shí)間的函數(shù)集
// 維護(hù)記錄: 2006-08-30 v1.0
//======================================================
#include "spce061a.h"
#include "Sound.h"
#include "Clock.h"
#include "Clock_Speech.h"
#include "Key.h"
//=============================================================
// 語法格式: unsigned int AdjustYear(unsigned int Year);
// 實(shí)現(xiàn)功能: 調(diào)整年
// 參數(shù): Year - 調(diào)整前的年
// 返回值: 調(diào)整后的年
//=============================================================
unsigned int AdjustYear(unsigned int Year)
{
unsigned int KeyCode;
unsigned int TempYear = Year;
PlayYear(TempYear); // 播放當(dāng)前年
while(1)
{
*P_Watchdog_Clear = 0x01;
KeyCode = Key_Get(); // 獲取按鍵
switch(KeyCode)
{
case KEY_1:
return TempYear; // 按Key1鍵返回調(diào)整后的年
case KEY_2:
TempYear++; // 按Key2鍵,年數(shù)加1
PlayYear(TempYear);
break;
case KEY_3:
TempYear--; // 按Key3鍵,年數(shù)減1
PlayYear(TempYear);
break;
default:
break;
}
}
}
//=============================================================
// 語法格式: unsigned int AdjustMon(unsigned int Mon);
// 實(shí)現(xiàn)功能: 調(diào)整月
// 參數(shù): Mon - 調(diào)整前的月
// 返回值: 調(diào)整后的月
//=============================================================
unsigned int AdjustMon(unsigned int Mon)
{
unsigned int KeyCode;
unsigned int TempMon = Mon;
PlayMon(TempMon); // 播報(bào)調(diào)整前的月
while(1)
{
*P_Watchdog_Clear = 0x01;
KeyCode = Key_Get();
switch(KeyCode)
{
case KEY_1: // Key1,返回調(diào)整后的月
return TempMon;
case KEY_2:
TempMon++; // Key2,月數(shù)加1,到12后回復(fù)為1
if(TempMon>12) TempMon = 1;
PlayMon(TempMon);
break;
case KEY_3:
TempMon--; // Key3,月數(shù)減1,到1后變?yōu)?2
if(TempMon<1) TempMon = 12;
PlayMon(TempMon);
break;
default:
break;
}
}
}
//=============================================================
// 語法格式: unsigned int AdjustDay(unsigned int Year, unsigned int Mon, unsigned int Day);
// 實(shí)現(xiàn)功能: 調(diào)整日
// 參數(shù): Year - 調(diào)整后的年
// Mon - 調(diào)整后的月
// Day - 調(diào)整前的日
// 返回值: 調(diào)整后的日
//=============================================================
unsigned int AdjustDay(unsigned int Year, unsigned int Mon, unsigned int Day)
{
unsigned int KeyCode;
unsigned int TempDay = Day;
if(TempDay > Month_Day[Mon-1]) // 如果當(dāng)前的日期已經(jīng)超過調(diào)整后月的最大天數(shù)則日期置為1
{
if(TempDay==29) // 處理閏年
{
if((Year&0x03)!=0) TempDay = 1;
}
else TempDay = 1;
}
PlayDay(TempDay); // 播放調(diào)整前日
while(1)
{
*P_Watchdog_Clear = 0x01;
KeyCode = Key_Get();
switch(KeyCode)
{
case KEY_1:
return TempDay; // Key1,返回調(diào)整后日
case KEY_2:
TempDay++; // Key2,日數(shù)加1,達(dá)到當(dāng)月最大日之后回復(fù)為1
if(TempDay > Month_Day[Mon-1])
{
if(TempDay==29) // 處理閏年
{
if((Year&0x03)!=0) TempDay = 1;
}
else TempDay = 1;
}
PlayDay(TempDay);
break;
case KEY_3:
TempDay--; // Key3,日數(shù)減1,減到0時(shí)轉(zhuǎn)為當(dāng)月最大日
if(TempDay<1)
{
if(Mon==2 && (Year&0x03)==0) TempDay = 29;
else TempDay = Month_Day[Mon-1];
}
PlayDay(TempDay);
break;
default:
break;
}
}
}
//=============================================================
// 語法格式: unsigned int AdjustHour(unsigned int Hour);
// 實(shí)現(xiàn)功能: 調(diào)整小時(shí)
// 參數(shù): Hour - 調(diào)整前的時(shí)
// 返回值: 調(diào)整后的時(shí)
//=============================================================
unsigned int AdjustHour(unsigned int Hour)
{
unsigned int KeyCode;
unsigned int TempHour = Hour;
PlayHour(TempHour); // 播報(bào)整前小時(shí)數(shù)
while(1)
{
*P_Watchdog_Clear = 0x01;
KeyCode = Key_Get();
switch(KeyCode)
{
case KEY_1:
return TempHour; // Key1,返回調(diào)整后的小時(shí)
case KEY_2:
TempHour++; // Key2,時(shí)數(shù)加1,到23后回復(fù)為0
if(TempHour>23) TempHour = 0;
PlayHour(TempHour);
break;
case KEY_3:
if(TempHour==0) TempHour = 23; // Key3,時(shí)數(shù)減1,到0后回復(fù)為23
else TempHour--;
PlayHour(TempHour);
break;
default:
break;
}
}
}
//=============================================================
// 語法格式: unsigned int AdjustMin(unsigned int Min);
// 實(shí)現(xiàn)功能: 調(diào)整分
// 參數(shù): Min - 調(diào)整前的分
// 返回值: 調(diào)整后的分
//=============================================================
unsigned int AdjustMin(unsigned int Min)
{
unsigned int KeyCode;
unsigned int TempMin = Min;
PlayNum(TempMin); // 播報(bào)調(diào)整前的分鐘數(shù)
PlaySnd(S_Fen);
while(1)
{
*P_Watchdog_Clear = 0x01;
KeyCode = Key_Get();
switch(KeyCode)
{
case KEY_1:
return TempMin; // Key1,返回調(diào)整后的分
case KEY_2:
TempMin++; // Key2,分鐘數(shù)加1,到59后變?yōu)?
if(TempMin>59) TempMin = 0;
PlayNum(TempMin);
PlaySnd(S_Fen);
break;
case KEY_3:
if(TempMin==0) TempMin = 59; // Key3,分鐘數(shù)減1,到0后變?yōu)?9
else TempMin--;
PlayNum(TempMin);
PlaySnd(S_Fen);
break;
default:
break;
}
}
}
//=============================================================
// 語法格式: unsigned int AdjustSec(unsigned int Sec);
// 實(shí)現(xiàn)功能: 調(diào)整秒
// 參數(shù): Sec - 調(diào)整前的秒
// 返回值: 調(diào)整后的秒
//=============================================================
unsigned int AdjustSec(unsigned int Sec)
{
unsigned int KeyCode;
unsigned int TempSec = Sec;
PlaySec(TempSec); // 播報(bào)調(diào)整前的秒數(shù)
while(1)
{
*P_Watchdog_Clear = 0x01;
KeyCode = Key_Get();
switch(KeyCode)
{
case KEY_1:
return TempSec; // Key1,返回調(diào)整后的秒
case KEY_2:
TempSec++; // Key2,秒加1,到59后變?yōu)?
if(TempSec>59) TempSec = 0;
PlaySec(TempSec);
break;
case KEY_3:
if(TempSec==0) TempSec = 59; // Key3,秒減1,到0后變?yōu)?9
else TempSec--;
PlaySec(TempSec);
break;
default:
break;
}
}
}
//=============================================================
// 語法格式: void Adjust(void);
// 實(shí)現(xiàn)功能: 調(diào)整日期時(shí)間
// 參數(shù): 無
// 返回值: 無
//=============================================================
void Adjust()
{
unsigned int TempYear, TempMon, TempDay, TempHour, TempMin, TempSec;
TempYear = AdjustYear(Clock_GetYear()); // 調(diào)整年
TempMon = AdjustMon(Clock_GetMon()); // 調(diào)整月
TempDay = AdjustDay(TempYear, TempMon, Clock_GetDay()); // 調(diào)整日
TempHour = AdjustHour(Clock_GetHour()); // 調(diào)整時(shí)
TempMin = AdjustMin(Clock_GetMin()); // 調(diào)整分
TempSec = AdjustSec(Clock_GetSec()); // 調(diào)整秒
Clock_SetYear(TempYear); // 保存調(diào)整后的日期時(shí)間
Clock_SetMon(TempMon);
Clock_SetDay(TempDay);
Clock_SetHour(TempHour);
Clock_SetMin(TempMin);
Clock_SetSec(TempSec);
PlaySnd(S_DING); // 播報(bào)調(diào)整后的日期時(shí)間
PlayYear(TempYear);
PlayMon(TempMon);
PlayDay(TempDay);
PlayHour(TempHour);
PlayMin(TempMin);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -