📄 r8025.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 + -