?? 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 + -