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

📄 clock8025.c

📁 基于单片机的多费率电能表源程序
💻 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 + -