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

📄 rtc.c

📁 keil 环境下44B0X调试模板
💻 C
字号:
/**************************************************************************************
//文件:RTC.C
//作者:sac
//日期:2008年8月10日
//版本:V1.0
//描述:
//版本更新描述
**************************************************************************************/
//=====================================================================================
//包含文件申明
#include	"S3C44B0X.h"                       /* S3C44B0X definitions */
#include 	"stdio.h"   
//=====================================================================================
//预定义申明	
//=====================================================================================
//全局变量定义

//=====================================================================================											  
//函数申明区
void RTC_Init( void );				
void RTC_SetDate( struct DAY  Date );
struct DAY RTC_GetData( void );
//=====================================================================================
//=====================================================================================
//函数原型:RTC_Init( void )
//输入参数:无
//返回参数:无
//功能描述:系统实时时钟初始化,初始化时间为 2008-1-1 12:00,星期三
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:

void RTC_Init( void )
{
	struct DAY	Day_init;
	pRTC->RTCCON |= 0x01;	//允许写RTC寄存器
	pRTC->RTCALM = 0x00;		//禁止报警
	pRTC->RTCRST = 0x00;		//禁止循环秒复位
    //pRTC->TICINT = 0x00;		//禁止节拍中断
	pRTC->TICINT = 0xff;		//允许节拍中断,1s
	pRTC->RTCCON &= 0xfe;	//关闭写RTC寄存器

	//初始化系统初始时间:2008-1-1 12:00
	Day_init.SEC	= 0x00;
	Day_init.MIN 	= 0x00;
	Day_init.HOUR	= 0x12;
	Day_init.WEEK	= 0x02;		//星期三
	Day_init.DATE	= 0x01;
	Day_init.MON	= 0x01;
	Day_init.YEAR	= 0x08;
	RTC_SetDate( Day_init );  
	
	return;	
}
//=====================================================================================
//函数原型:void RTC_SetDate( struct DAY  Date )
//输入参数:struct DAY  Date描述当前时间的结构体
//返回参数:无
//功能描述:设置当前系统时间
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:

void RTC_SetDate( struct DAY  Date )
{
	pRTC->RTCCON |= 0x01;	//允许写RTC寄存器

	//初始化系统初始时间:2008-1-1 12:00
	pRTC->BCDSEC 	= Date.SEC;
	pRTC->BCDMIN 	= Date.MIN;
	pRTC->BCDHOUR 	= Date.HOUR;
	pRTC->BCDDAY 	= Date.WEEK;	  	//星期三
	pRTC->BCDDATE 	= Date.DATE;
	pRTC->BCDMON 	= Date.MON;
	pRTC->MCDYEAR 	= Date.YEAR;

	pRTC->RTCCON &= 0xfe;	//关闭写RTC寄存器 	
	return;	
}
//=====================================================================================
//函数原型:struct DAY RTC_GetData( void )
//输入参数:无
//返回参数:struct DAY  Date描述当前时间的结构体
//功能描述:获取当前系统时间
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:

struct DAY RTC_GetData( void )
{ 	
	struct DAY Date;
	unsigned int i;
	pRTC->RTCCON |= 0x01;	//允许写RTC寄存器

	i = pRTC->BCDSEC;
	Date.SEC 	= i/16*10 + i%16 ;
	i =	pRTC->BCDMIN ;
	Date.MIN	= i/16*10 + i%16 ;
	i =	pRTC->BCDHOUR ;
	Date.HOUR	= i/16*10 + i%16 ;
	i =	pRTC->BCDDAY  ;
	Date.WEEK	= i/16*10 + i%16 ;
	i =	pRTC->BCDDATE ;
	Date.DATE	= i/16*10 + i%16 ;
	i =	pRTC->BCDMON  ;
	Date.MON	= i/16*10 + i%16 ;
	i =	pRTC->MCDYEAR ;
	Date.YEAR	= i/16*10 + i%16 ;

	pRTC->RTCCON &= 0xfe;	//关闭写RTC寄存器 	
	return Date;
}
//=====================================================================================
//函数原型:__irq  void  HandlerTICK( void )
//输入参数:无
//返回参数:无
//功能描述:RTC TICH中断函数
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:

void  HandlerTICK( void )  __irq   
{
	struct	DAY date;
	//printf("RTC tick--NEW\n");
	
	
	date = RTC_GetData();
	printf("当前时间;20%02d年%02d月%02d日 星期%d %02d;%02d;%02d\n",
				date.YEAR,date.MON,date.DATE,date.WEEK,
				date.HOUR,date.MIN,date.SEC);
	
	pIC->I_ISPC = INT_TICK ;	//清中断标志位 I_ISPC	
	return;
}
//=====================================================================================
//添加RTC报警功能设置
//=====================================================================================
//添加RTC报警中断服务函数
//=====================================================================================
//修改RTC初始化函数,增加报警使能功能
//=====================================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -