F5529单片机实时时钟模块提供了具有日历模式、灵活可编程闹钟和校准的时钟计数器功能,其具有以下特征:
◆可配置成实时时钟模式或一般目的的计数器;
◆在日历模式下提供了秒、分钟、小时、星期、日期、月份和年份;
◆具有中断功能;
◆实时时钟模式里可选择BCD码或二进制格式;
◆实时时钟模式里具有可编程闹钟;
◆实时时钟模式里具有时间偏差的逻辑校正。
初始化时钟
RTCMODE:选择为日历模式,RTCBCD:日历模式,必须要设置为BCD格式
RTCHOLD:暂停日历,防止去读,RTCTEV_1:改变日期与时间
void SetupRTC(void)
{
RTCCTL01 = RTCMODE + RTCBCD + RTCHOLD + RTCTEV_1;
//设置时间,2016:02:19:04:30:00
RTCHOUR = 0x04;
RTCMIN = 0x30;
RTCSEC = 0x00;
RTCDAY = 0x19;
RTCMON = 0x02;
RTCYEAR = 0x2016;
//打开日历
RTCCTL01 &= ~RTCHOLD;
// RTCPS1CTL = RT1IP_5; // Interrupt freq: 2Hz
//RTCPS0CTL = RT0IP_7; // Interrupt freq: 128hz
//使能读日历中断
RTCCTL0 |= RTCRDYIE + RTCTEVIE; // Enable interrupt
}
void DisplayDigitalClock(void) {
hourBCD = RTCHOUR;
minuteBCD = RTCMIN;
secondBCD = RTCSEC; //读取RTC时间寄存器
DigitalClockDraw(); //显示当前数字时间
//将当前的时候设置为旧的时间
hourOldBCD = hourBCD;
minuteOldBCD = minuteBCD;
secondOldBCD = secondBCD;
}
// 在第四行,第五行显示时间与日期
void DigitalClockDraw(void) {
DigitalClockUpdate();
Dogs102x6_stringDraw(4, 40, time, DOGS102x6_DRAW_NORMAL);
Dogs102x6_stringDraw(5, 40, date, DOGS102x6_DRAW_NORMAL);
}
|