📄 2410rtc.c
字号:
//====================================================================
// File Name : 2410RTC.c
// Function : S3C2410 RTC Test Program
// Program : Shin, On Pil (SOP)
// Date : May 06, 2002
// Version : 0.0
// History
// 0.0 : Programming start (March 11, 2002) -> SOP
//====================================================================
#include "2410addr.h"
#include "2410lib.h"
#include "2410RTC.h"
char *day[8] = {" ","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
volatile int isRtcInt, isInit = 2; //April 01, 2002 SOP
volatile unsigned int sec_tick;
//=======================================
//Period = (n + 1) / 128 second
// n : Tick time count value (1~127)
//=======================================
//=======================================
//名称:Display_Rtc
//功能:设置和显示当前时间
//参数: void
//返回值: void
//=======================================
void Display_Rtc(void)
{
int i;
int year;
int month,date,weekday,hour,mi,sec,tmp;
//RTCCON RTCEN [0] = 1 : Enable
//RTCCON CLKSEL [1] = 0 : XTAL 1/2^15 divided clock
//RTCCON CNTSEL [2] = 0 : Merge BCD counters
//RTCCON CLKRST [3] = 0 : No reset,
rRTCCON = 0x01; // 读写使能, 1/32768, 正常模式, 不复位
Uart_Printf("\nWill you input the new time now?1/0:");
i=Uart_GetIntNum();//输入1表示修改时间,修改0表示不修改
if (i==1)
{
Uart_Printf("\nInput the new time :");
Uart_Printf("\n year:(exp:05 means 2005)");
//BCDYEAR YEARDATA [7:0] : BCD value for year.
rBCDYEAR=Bcd(Uart_GetIntNum());//将输入的数字转变为BCD码后赋给寄存器
Uart_Printf("\n month:(exp:07)");
//BCDMON MONDATA [ 4] : BCD value for month.0~1
// [3:0] : 0 ~ 9
rBCDMON=Bcd(Uart_GetIntNum());//将输入的数字转变为BCD码后赋给寄存器
Uart_Printf("\n date:(exp:25)");
//BCDDATE DATEDATA [5:4] : BCD value for date.0 ~ 3
// [3:0] : 0 ~ 9
rBCDDATE =Bcd(Uart_GetIntNum());//将输入的数字转变为BCD码后赋给寄存器
Uart_Printf("\n day:(exp:4 means SAT)");
//BCDDAY DAYDATA [2:0] : BCD value for a day of the week. 1~7
rBCDDAY=Bcd(Uart_GetIntNum());//将输入的数字转变为BCD码后赋给寄存器
Uart_Printf("\n hour:(exp:12)");
//BCDHOUR HOURDATA [5:4] : BCD value for hour.0 ~ 2
// [3:0] : 0 ~ 9
rBCDHOUR =Bcd(Uart_GetIntNum());//将输入的数字转变为BCD码后赋给寄存器
Uart_Printf("\n minitue:(exp:35)");
//BCDMIN MINDATA [6:4] : BCD value for minute.0 ~ 5
// [3:0] : 0 ~ 9
rBCDMIN =Bcd(Uart_GetIntNum());//将输入的数字转变为BCD码后赋给寄存器
Uart_Printf("\n second:(exp:23)");
//BCDSEC SECDATA [6:4] : BCD value for second.0 ~ 5
// [3:0] : 0 ~ 9
rBCDSEC=Bcd(Uart_GetIntNum());//将输入的数字转变为BCD码后赋给寄存器
}
while(!Uart_GetKey())
{
while(1)
{
if(rBCDYEAR == 0x99)
year = 0x1999;
else
year = 0x2000 + rBCDYEAR;
month = rBCDMON;
weekday = rBCDDAY;
date = rBCDDATE;
hour = rBCDHOUR;
mi = rBCDMIN;
sec = rBCDSEC;
if(sec!=tmp)
{
tmp = sec;
break;
}
}
Uart_Printf("%2x : %2x : %2x %10s, %2x/%2x/%4x\n",hour,mi,sec,day[weekday],month,date,year);//显示当前时间
}
Uart_Printf("TEST FINISHED.");
rRTCCON = 0x0; //不复位, 1/32768分频, 关闭RTC Control
}
//===================================
//名称:Bcd
//功能:将输入得数字转化为BCD码
//参数: void
//返回值: void
//===================================
int Bcd (inputnumber)//将输入得数字转化为BCD码
{
int m,n,l;
m=inputnumber/10;
n=inputnumber%10;
l=m*16+n;
return(l);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -