?? clock.c
字號:
//======================================================
// 文件名稱: Clock.c
// 功能描述: 計時模塊,使用2Hz時基中斷
// 維護記錄: 2006-08-30 v1.0
//======================================================
#include "spce061a.h"
typedef struct STR_CLOCK // 定義時鐘結構體
{
unsigned int Year;
unsigned int Mon;
unsigned int Day;
unsigned int Hour;
unsigned int Min;
unsigned int Sec;
unsigned int HalfSec;
}CLOCK;
CLOCK Clock = {2006, 1, 1, 0, 0, 0, 0}; // 時鐘初始值2006年1月1日0點0分
const unsigned int Month_Day[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 每月包含的天數
//=============================================================
// 語法格式: void Clock_ISR(void);
// 實現功能: 計時模塊的2Hz中斷服務程序,應在IRQ5_2Hz中斷中調用
// 參數: 無
// 返回值: 無
//=============================================================
void Clock_ISR()
{
if(Clock.HalfSec==0) // 0.5秒
Clock.HalfSec = 1;
else
{
Clock.HalfSec = 0;
Clock.Sec += 1;
if(Clock.Sec==60) // 處理秒進位
{
Clock.Sec = 0;
Clock.Min += 1;
if(Clock.Min==60) // 處理分進位
{
Clock.Min = 0;
Clock.Hour += 1;
if(Clock.Hour==24) // 處理小時進位
{
Clock.Hour = 0;
Clock.Day += 1; // 處理天進位
if(Clock.Day > Month_Day[Clock.Mon-1])
{
if(Clock.Mon!=2 || (Clock.Year&0x03)!=0 || Clock.Day>29)
{ // 如果是閏年則2月29日不進位
Clock.Day = 1;
Clock.Mon += 1;
if(Clock.Mon > 12) // 處理月進位
{
Clock.Mon = 1;
Clock.Year += 1;
}
}
}
}
}
}
}
}
//=============================================================
// 語法格式: void Clock_Start(void);
// 實現功能: 開始計時
// 參數: 無
// 返回值: 無
//=============================================================
void Clock_Start()
{
*P_INT_Ctrl_New |= C_IRQ5_2Hz;
__asm("IRQ ON");
}
//=============================================================
// 語法格式: unsigned int Clock_GetYear();
// 實現功能: 查詢當前年
// 參數: 無
// 返回值: 當前年
//=============================================================
unsigned int Clock_GetYear()
{
return Clock.Year;
}
//=============================================================
// 語法格式: unsigned int Clock_GetMon(void);
// 實現功能: 查詢當前月
// 參數: 無
// 返回值: 當前月
//=============================================================
unsigned int Clock_GetMon()
{
return Clock.Mon;
}
//=============================================================
// 語法格式: unsigned int Clock_GetDay(void);
// 實現功能: 查詢當前日
// 參數: 無
// 返回值: 當前日
//=============================================================
unsigned int Clock_GetDay()
{
return Clock.Day;
}
//=============================================================
// 語法格式: unsigned int Clock_GetHour(void);
// 實現功能: 查詢當前小時
// 參數: 無
// 返回值: 當前時
//=============================================================
unsigned int Clock_GetHour()
{
return Clock.Hour;
}
//=============================================================
// 語法格式: unsigned int Clock_GetMin(void);
// 實現功能: 查詢當前分
// 參數: 無
// 返回值: 當前分
//=============================================================
unsigned int Clock_GetMin()
{
return Clock.Min;
}
//=============================================================
// 語法格式: unsigned int Clock_GetSec(void);
// 實現功能: 查詢當前秒
// 參數: 無
// 返回值: 當前秒
//=============================================================
unsigned int Clock_GetSec()
{
return Clock.Sec;
}
//=============================================================
// 語法格式: void Clock_SetYear(unsigned int Year);
// 實現功能: 設置年
// 參數: Year - 年
// 返回值: 無
//=============================================================
void Clock_SetYear(unsigned int Year)
{
Clock.Year = Year;
}
//=============================================================
// 語法格式: void Clock_SetMon(unsigned int Mon);
// 實現功能: 設置月
// 參數: Mon - 月
// 返回值: 無
//=============================================================
void Clock_SetMon(unsigned int Mon)
{
Clock.Mon = Mon;
}
//=============================================================
// 語法格式: void Clock_SetDay(unsigned int Day);
// 實現功能: 設置日
// 參數: Day - 日
// 返回值: 無
//=============================================================
void Clock_SetDay(unsigned int Day)
{
Clock.Day = Day;
}
//=============================================================
// 語法格式: void Clock_SetHour(unsigned int Hour);
// 實現功能: 設置小時
// 參數: Hour - 時
// 返回值: 無
//=============================================================
void Clock_SetHour(unsigned int Hour)
{
Clock.Hour = Hour;
}
//=============================================================
// 語法格式: void Clock_SetMin(unsigned int Min);
// 實現功能: 設置分
// 參數: Min - 分
// 返回值: 無
//=============================================================
void Clock_SetMin(unsigned int Min)
{
Clock.Min = Min;
}
//=============================================================
// 語法格式: void Clock_SetSec(unsigned int Sec);
// 實現功能: 設置秒
// 參數: Sec - 秒
// 返回值: 無
//=============================================================
void Clock_SetSec(unsigned int Sec)
{
*P_TimeBase_Clear = 0x01; // 時基計數器清零
Clock.Sec = Sec;
Clock.HalfSec = 0; // 半秒計數清零
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -