📄 clock8025.c
字号:
#define CLOCK_GLOBALS
#include "includes.h"
void Clock8025Init(void)
{
INT8U i,InitSign;
INT8U TempVar[2];
for(i=0;i<3;i++)
{
InitSign=1;
ReadI2cDevice(CLOCK8025_DEVICE_ADDRESS,CONTROL2_REG_ADR,TempVar,1);
if((TempVar[0]&0x70)==0x20)
{
ReadI2cDevice(CLOCK8025_DEVICE_ADDRESS,SECONDS_REG_ADR,&CurrentTime.Second,7);
if(CheckTime(&CurrentTime.Second)&&CheckDate(&CurrentTime.Day)&&(CurrentTime.Weekday<0x07))
{
InitSign=0;
break;
}
}
}
if(InitSign)
{
for(i=0;i<3;i++)
{
TempVar[0]=ALARM_W_DISABLE|ALARM_D_DISABLE|CLOCK_MODE_24|INTA_OUTPUT_PULSE_1HZ;
TempVar[1]=POWER_DROP_DETECT_VOLTAGE_2DOT1|POWER_DROP_SIGN_CLEAR|OSC_STOP_SIGN_CLEAR|
POWER_RESET_SIGN_CLEAR|INTA_OUTPUT_STATE_OFF|ALARM_W_SIGN_CLEAR|ALARM_D_SIGN_CLEAR;
WriteI2cDevice(CLOCK8025_DEVICE_ADDRESS,TempVar,CONTROL1_REG_ADR,2);
DelayXms(30);
//ReadI2cDevice(CLOCK8025_DEVICE_ADDRESS,CONTROL1_REG_ADR,TempVar,2);
CurrentTime.Year=0x07;
CurrentTime.Month=0x05;
CurrentTime.Day=0x12;
CurrentTime.Weekday=0x06;
CurrentTime.Hour=0x7;
CurrentTime.Minute=0x59;
CurrentTime.Second=0x00;
WriteI2cDevice(CLOCK8025_DEVICE_ADDRESS,&CurrentTime.Second,SECONDS_REG_ADR,7);
DelayXms(30);
ReadI2cDevice(CLOCK8025_DEVICE_ADDRESS,SECONDS_REG_ADR,&CurrentTime.Second,7);
if(CheckTime(&CurrentTime.Second)&&CheckDate(&CurrentTime.Day)&&(CurrentTime.Weekday<0x07))
{
_Clock8025Err_=0;
break;
}
else
_Clock8025Err_=1;
}
}
}
void GetCurrentDateAndTime(void)
{
ReadI2cDevice(CLOCK8025_DEVICE_ADDRESS,SECONDS_REG_ADR,&CurrentTime.Second,7);
}
void SetSystemDateAndTime(INT8U *PtTime)
{
WriteI2cDevice(CLOCK8025_DEVICE_ADDRESS,PtTime,SECONDS_REG_ADR,7);
}
void SetSystemDate(INT8U *PtTime)
{
WriteI2cDevice(CLOCK8025_DEVICE_ADDRESS,PtTime,WEEKDAYS_REG_ADR,4);
}
void SetSystemTime(INT8U *PtTime)
{
WriteI2cDevice(CLOCK8025_DEVICE_ADDRESS,PtTime,SECONDS_REG_ADR,3);
}
void AdjustClockPrecision(INT8U AdjustValue)
{
WriteI2cDevice(CLOCK8025_DEVICE_ADDRESS,&AdjustValue,PRECISION_REG_ADR,1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -