?? rtc.c
字號:
#include"reg935.h"
#include"UserDef.h"
uint idata delayCount;
uchar data recCurrentTimeBuf[7]; //暫存當前時間緩沖器[0]=世紀[1]=年[2]=月[3]=日[4]=時[5]=分[6]=秒
extern uint data delayTime;
extern uchar data recPresetData[4];
extern void ReadEEPROMByte(uchar orgAddr, uchar dataSize, uchar *bufPtr);
extern void EEPROMWriteByte(uchar orgAddr, uchar dataSize, uchar *bufPtr);
void TimeGenerator(void);
void RTC_ISR(void) interrupt 10
{
static uint secCount = 0;
EA=0;
secCount++;
RTCCON &= 0x63; //清除RTC中斷標志位
TimeGenerator(); //時間產生
if(secCount==WRITE_EEPROM_INTERVAL) //到寫EEPROM 時間
{
ReadEEPROMByte(EEPROM_TIME_ADDR, 7, recCurrentTimeBuf);
secCount = 0;
}
EA=1;
}
//---------------------------------------------------------------------------
//函數名稱:void TimeGenerator(void)
//功能描述:產生時鐘
//輸入:無
//輸出:無
//---------------------------------------------------------------------------
void TimeGenerator(void)
{
recCurrentTimeBuf[SEC]++;
if(recCurrentTimeBuf[SEC]>59)
{
recCurrentTimeBuf[SEC] = 0;
recCurrentTimeBuf[MIN]++;
delayCount++;
if(recCurrentTimeBuf[MIN]>59)
{
recCurrentTimeBuf[MIN] = 0;
recCurrentTimeBuf[HOUR]++;
if(recCurrentTimeBuf[HOUR]>23)
{
recCurrentTimeBuf[HOUR] = 0;
recCurrentTimeBuf[DATE]++;
switch(recCurrentTimeBuf[MON]) //查詢當前月份
{
case 2: //是2 月份
if(((recCurrentTimeBuf[YEAR]!=0)&&(recCurrentTimeBuf[YEAR]%4==0))||((recCurrentTimeBuf[YEAR]==0)&&(recCurrentTimeBuf[CENT]%4==0)))
{
//是閏年2 月29 天
if(recCurrentTimeBuf[DATE]>29)
recCurrentTimeBuf[DATE] = 1;
}
else
{
//是平年2 月28 天
if(recCurrentTimeBuf[DATE]>28)
recCurrentTimeBuf[DATE] = 1;
}
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(recCurrentTimeBuf[DATE]>31)
recCurrentTimeBuf[DATE] = 1;
break;
default:
if(recCurrentTimeBuf[DATE]>30)
recCurrentTimeBuf[DATE] = 1;
break;
}
recCurrentTimeBuf[MON]++;
if(recCurrentTimeBuf[MON]>12)
{
recCurrentTimeBuf[MON] = 1;
recCurrentTimeBuf[YEAR]++;
if(recCurrentTimeBuf[YEAR]>99)
{
recCurrentTimeBuf[YEAR] = 0;
recCurrentTimeBuf[CENT]++;
}
}
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -