RTCEN 位可以控制所有CPU 与RTC 之间的接口,因此在系统复位后在RTC 控制程序中必须设置为1 来使
能数据的读/写。同样的在掉电前,RTCEN 位应该清除为0 来预防误写入RTC 寄存器中。
RTC(Real-Time Clock):实时时钟。它的主要作用就是提供稳定的实时时钟给后续电路用。主要功能有:时钟,日历,闹钟,周期性中断输出,32KHz时钟输出。系统掉电的情况下,利用后备电源使时钟继续运行,从而不会丢失时间信息。
寄存器:
RTCCON:控制寄存器
TICNT:节拍时间计数器
RTCALM:闹钟控制寄存器
ALMSEC:秒闹钟寄存器
ALMMIN:分闹钟寄存器
ALMHOUR:小时闹钟寄存器
ALMDATE:日闹钟寄存器
ALMMON:月闹钟寄存器
ALMYEAR:年闹钟寄存器
BCDSEC :秒寄存器
BCDMIN:分寄存器
BCDHOUR:时寄存器
BCDDAY:星期寄存器
BCDDATE:日寄存器
BCDMON:月寄存器
BCDYEAR:年寄存器
#defineGLOBAL_CLK1
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
typedef struct Date
{
U16 year;
U8 month;
U8 day;
U8 week_day;
U8 hour;
U8 mintue;
U8 second;
}date;
date now_time;
void RTC_Setdate()
{
rRTCCON = 0x01;
rBCDYEAR =0x13;//p_date->year;
rBCDMON=0x07; //p_date->month;
rBCDDATE =0x29;// p_date->day;
rBCDDAY=0x2;// p_date->week_day;
rBCDHOUR =0x10;// p_date->hour;
rBCDMIN=0x48;//p_date->mintue;
rBCDSEC=0x00;//p_date->second;
rRTCCON = 0x00;
}
void RTC_Read(date *p_date)
{
rRTCCON = 0x01;
p_date->year = rBCDYEAR +0x2000 ;
p_date->month = rBCDMON ;
p_date->day = rBCDDATE ;
p_date->week_day = rBCDDAY;
p_date->hour = rBCDHOUR ;
p_date->mintue =rBCDMIN;
p_date->second = rBCDSEC ;
rRTCCON = 0x00;
}
void delay(int times)
{
int i,j;
for(i = 0;i < times; i++)
for(j = 0; j < times; j++);
}
int Main()
{
char *week[7] = {"SUN","MON","TUES","WED","THURS","FRI","SAT"};
MMU_Init();
// RTC_Setdate();
while(1)
{
RTC_Read(&now_time);
Uart_Printf("NOWTIME: x-x-x %s x:x:x",now_time.year,
now_time.month,
now_time.day,
week[now_time.week_day-1],
now_time.hour,