📄 rtc.c
字号:
#include "mx_types.h"
#include "2410addr.h"
#include "2410lib.h"
#include "rtc.h"
//#define _XTAL_
u_8 BCD2DEC(u_8 BCDnum)
{
return ((((BCDnum>>4)&0x0f)*10)+(BCDnum&0x0f));
}
u_8 DEC2BCD(u_8 DECnum)
{
return ((((DECnum/10)&0x0f)<<4)|((DECnum%10)&0x0f));
}
void RTC_Reset(void)
{
rRTCCON = CLKRST |RTCEN;
Delay(20);
rRTCCON = RTCEN;
Delay(20);
#ifdef _XTAL_
rRTCCON |= CLKSEL;
#endif //_XTAL_
}
void RTC_Start(void)
{
rRTCRST = 0x08; //
rTICNT = 0xFF; //Tick time interrupt enable, and tick counter vlaue is 127
rBCDSEC = 0;
rBCDMIN = 0;
rBCDHOUR = 0;
rBCDDATE = 1;
rBCDMON = 2;
rBCDYEAR = 0;
}
void RTC_GetTime(RTC_Time *prTime)
{
prTime->second =BCD2DEC(rBCDSEC);
prTime->minute =BCD2DEC(rBCDMIN);
prTime->hour =BCD2DEC(rBCDHOUR);
prTime->date =BCD2DEC(rBCDDATE);
prTime->month =BCD2DEC(rBCDMON);
prTime->year =BCD2DEC(rBCDYEAR) + 2007;
}
void RTC_AlarmEnable(u_8 Almen, RTC_Time * prTime)
{
rALMYEAR = DEC2BCD(prTime->year);
rALMMON= DEC2BCD(prTime->month);
rALMDAY= DEC2BCD(prTime->date);
rALMHOUR= DEC2BCD(prTime->hour);
rALMMIN= DEC2BCD(prTime->minute);
rALMSEC= DEC2BCD(prTime->second);
rRTCALM = Almen; // alarm interrupt or wake_up from power down mode.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -