www.pudn.com > uCOSII_no.rar > Rtc.c, change:2005-05-14,size:2715b


/**************************************************************************** 
【文  件  名  称】RTC.c 
【功  能  描  述】三星S3C44B0X板 uC/OS-II 驱动程序代码----RTC 
【程  序  版  本】1.0 
【创建人及创建日期】龚俊//2003-12-19 10:57 
【修改人及修改日期】龚俊//2003-12-19 10:57 
****************************************************************************/ 
 
#include "def.h" 
#include "2410addr.h" 
#include "config.h" 
#include "board.h" 
#include "utils.h" 
 
#include "os_cpu.h" 
#include "rtc.h" 
 
//------------------------------------------------------------------ 
// 函数名:STRU_SYS_TIME Get_Time(void) 
// 输入  :Null 
// 输出  :STRU_SYS_TIME Get_SysTime 
// 功能描述:获得系统RTC时间值 
// 全局变量:Null 
//--------------------------------------------------------------- 
STRU_SYS_TIME Get_Time(void) 
{ 
	STRU_SYS_TIME Get_SysTime;  //定义系统RTC结构体 
 
	rRTCCON=0x1;                //打开RTC操作允许位 
	Get_SysTime.ucYear  =rBCDYEAR; 
	Get_SysTime.ucMonth = rBCDMON; 
	Get_SysTime.ucDay   = rBCDDAY; 
	Get_SysTime.ucHour  = rBCDHOUR; 
	Get_SysTime.ucMinute= rBCDMIN; 
	Get_SysTime.ucSecond= rBCDSEC; 
	rRTCCON = 0x0;              //关闭RTC操作允许位	 
 
	return(Get_SysTime); 
} 
//------------------------------------------------------------------ 
// 函数名:void Set_Time(STRU_SYS_TIME Set_SysTime) 
// 输入  :STRU_SYS_TIME Set_SysTime 
// 输出  :Null 
// 功能描述:设置系统RTC时间 
// 全局变量:Null 
//--------------------------------------------------------------- 
void Set_Time(STRU_SYS_TIME Set_SysTime) //Set System Time 
{ 
	rRTCCON = 0x1;              //打开RTC操作允许位 
	rBCDYEAR=Set_SysTime.ucYear; 
	rBCDMON =Set_SysTime.ucMonth; 
	rBCDDAY =Set_SysTime.ucDay; 
	rBCDHOUR=Set_SysTime.ucHour; 
	rBCDMIN =Set_SysTime.ucMinute; 
	rBCDSEC =Set_SysTime.ucSecond; 
	rRTCCON = 0x0;              //关闭RTC操作允许位	 
} 
//------------------------------------------------------------------ 
// 函数名:void Init_Time(void) 
// 输入 : Null 
// 输出 : Null 
// 功能描述:检测当前RTC时间值是否合法,否则则以本工程编译时间进行初始化 
// 全局变量:Null 
//------------------------------------------------------------------ 
void Init_Time(void) 
{ 
 
	STRU_SYS_TIME c_SysTime; 
	c_SysTime=Get_Time(); 
    if( 
		(c_SysTime.ucYear>Valid_Year)    ||(c_SysTime.ucMonth>Valid_Month)  || 
		(c_SysTime.ucDay>Valid_Day)      ||(c_SysTime.ucHour>Valid_Hour)    || 
		(c_SysTime.ucMinute>Valid_Minute)||(c_SysTime.ucSecond>Valid_Second)) 
    { 
		c_SysTime.ucYear  =Build_Year; 
		c_SysTime.ucMonth =Build_Month; 
		c_SysTime.ucDay   =Build_Day; 
		c_SysTime.ucHour  =Build_Hour; 
		c_SysTime.ucMinute=Build_Minute; 
		c_SysTime.ucSecond=Build_Second; 
		Set_Time(c_SysTime);	//set the valid time 
	} 
}