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); }