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

📄 rtc.c

📁 使用ads1.2编译器
💻 C
字号:
#ifndef _Include 
#include  "Include.h"
#endif
TIME_STRUC TIME2220;
/****************************************************************************
* 名称:RTCIni()
* 功能:初始化实时时钟。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  RTCIni(void)
{
	PCF8563Init();
	
	PREINT = Fpclk / 32768 - 1;	// 设置基准时钟分频器
	PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
	ILR=0x03;    //清除报警和计数器中断
	AMR=0x00;	//报警屏闭关
	ALSEC=0x00;    //秒报警值
	CIIR=0x00;    //禁止中断
	LPC2220SetRTC();
	CIIR=0x01;    //打开秒值递增报警
	CCR=0x01;		//使能时钟
   
	VICVectAddr8 = (int)IRQ_RTCReflash;
	VICVectCntl8 = (0x20 | VIC_RTC);

}
/****************************************************************************
* 名称:OpenRTC_IRQ()
* 功能:打开RTC中断
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  OpenRTC_IRQ(void)
{
    VICIntEnable |= INT_RTC;	// 中断使能 实时时钟
}

/****************************************************************************
* 名称:CloseRTC_IRQ()
* 功能:关闭RTC中断
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  CloseRTC_IRQ(void)
{
    VICIntEnClr = INT_RTC;	// 中断使能 实时时钟
}

/****************************************************************************
* 名称:LPC2220SetRTC()
* 功能:设置实时时钟。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  LPC2220SetRTC(void)
{
	CCR = 0x00;				    // 停止RTC
	PCF8563TimeGet();
	YEAR = 2000+(TIME8563.year>>4)*10+(TIME8563.year&0x0f);				    // 初始化年
	MONTH = (TIME8563.month>>4)*10+(TIME8563.month&0x0f);				    // 初始化月
	DOM =	(TIME8563.day>>4)*10+(TIME8563.day&0x0f);	  			    // 初始化日
	DOW =	TIME8563.weekday&0x07;
	HOUR =	(TIME8563.hour>>4)*10+(TIME8563.hour&0x0f);	 
	MIN =	(TIME8563.min>>4)*10+(TIME8563.min&0x0f);	
	SEC =	(TIME8563.sec>>4)*10+(TIME8563.sec&0x0f);	 
	CCR=0x01;		//使能时钟
}

/****************************************************************************
* 名称:ReadTimeRtc()
* 功能:读取RTC的时间值
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  ReadTimeRtc(void)
{
   INT32U  datas;
   INT32U  times;
   INT32U  bak;
    
   times = CTIME0;			// 读取完整时钟寄存器
   datas = CTIME1;
   
   bak = (datas>>16)&0xFFF;     // 取得年值
   TIME2220.year=bak;
   
   bak = (datas>>8)&0x0F;       // 取得月值
   TIME2220.month=bak;
   
   bak = datas&0x1F;            // 取得日值
   TIME2220.day=bak;
   
   bak = (times>>24)&0x07;      // 取得星期值
   TIME2220.weekday=bak;
   
   bak = (times>>16)&0x1F;		// 取得时的值
   TIME2220.hour=bak;
   
   bak = (times>>8)&0x3F;		// 取得分的值
   TIME2220.min=bak;
   
   bak = times&0x3F;			// 取得秒的值
   TIME2220.sec=bak;
   
   datas=ILR;
   ILR=datas;

}




⌨️ 快捷键说明

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