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

📄 r8025.c

📁 RTC8025时钟芯片驱动
💻 C
字号:
#include "..\inc\include.h"

//////////////////////////////////////////////////////////////////////////
//函数名:InitR8025
//功能描述: 初始化R8025
//入口参数:无
//函数返回值:无
//////////////////////////////////////////////////////////////////////////
void InitR8025(void)
{
	U8 g8Time[8];

	g8Time[0] = 0x20;	//表示时钟为24小时
	g8Time[1] = 0x20;	//激活停振检测功能
	
	ISendStr(I2C_R8025_ADDR,1,0xe0,g8Time, 2);//修改e、f寄存器。

}

/****************************************************************************
* 名称:		ReadR8025
* 功能:		从8025中读出当前时间
* 入口参数:	SMHDMYW *ptimestr	:存放时间数据的数据结构
* 出口参数:	无
* 作者:
* 编制日期:	
****************************************************************************/
void ReadR8025(SMHDMYW *ptimestr)
{
	U8 g8Time[8];

	IRcvStr(I2C_R8025_ADDR,1,0,g8Time, 7);
	ptimestr->sec = g8Time[0];
	ptimestr->min = g8Time[1];
	ptimestr->hour = g8Time[2];
	ptimestr->week = g8Time[3];
	ptimestr->day = g8Time[4];
	ptimestr->mon = g8Time[5];
	ptimestr->year = g8Time[6];
	ptimestr->highYear = 0x20;

	if (CheckTime(ptimestr) == FALSE)
	{
		ptimestr->sec = 0x00;
		ptimestr->min = 0x00;
		ptimestr->hour = 0x00;
		ptimestr->week = 0x01;
		ptimestr->day = 0x01;
		ptimestr->mon = 0x01;
		ptimestr->year = 0x06;
		ptimestr->highYear = 0x20;

		WriteR8025(ptimestr);
	}

	return;
}

//////////////////////////////////////////////////////////////////////////
//函数名:WriteR8025
//功能描述:将当前时间写入R8025
//入口参数:SMHDMYW *ptimestr	:存放时间数据的数据结构
//函数返回值:无
//////////////////////////////////////////////////////////////////////////

void WriteR8025(SMHDMYW *ptimestr)
{
	U8 g8Time[8];

	g8Time[0] = ptimestr->sec;
	g8Time[1] = ptimestr->min;
	g8Time[2] = ptimestr->hour;
	g8Time[3] = ptimestr->week;
	g8Time[4] = ptimestr->day;
	g8Time[5] = ptimestr->mon;
	g8Time[6] = ptimestr->year;
	
	ISendStr(I2C_R8025_ADDR,1,0,g8Time, 7);
}

//////////////////////////////////////////////////////////////////////////
//函数名:CheckTime
//功能描述:时间检查
//入口参数:SMHDMYW *pData	:时间结构
//函数返回值:数据正确,返回TRUE,否则返回FALSE
//////////////////////////////////////////////////////////////////////////

U8  CheckTime(SMHDMYW *pData)
{  
	if(JudgeBCD(pData->year) ==TRUE){
		if ((JudgeBCD(pData->mon) == TRUE) && (pData->mon <= 0x12)){
			if ((JudgeBCD(pData->day) == TRUE) && (pData->day <= 0x31)){
				if ((JudgeBCD(pData->hour) == TRUE) && (pData->hour < 0x24)){
					if ((JudgeBCD(pData->min) == TRUE) && (pData->min < 0x60)){
						if ((JudgeBCD(pData->sec) == TRUE) && (pData->sec < 0x60)){
							return TRUE;
						}
					}
				}
			}
		}
	}
	return FALSE;
}

⌨️ 快捷键说明

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