⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2410rtc.c

📁 RTC方面的东东,希望对大家有所帮助,呵呵, 我为人人,人人为我
💻 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 + -