pcf8563.c

来自「关于实时时钟的驱动程序,你可以很方便的加入到自己的应用程序」· C语言 代码 · 共 97 行

C
97
字号
/*
 *CopyRight  Reserved?    凯拓科技版权所有  http://www.ktopcn.com  
 *文件名:PCF8563.c
 *描述:提供8563的底层驱动。
 *
 *版本:v1.0
 *作者:ktop
 *日期:2004/12/31
 */
#define		PCF8563_C
#include "PCF8563.h"



/*
 *函数性质:公共
 *入口:无
 *出口:无
 *功能:启动8563时钟
 */
void StartClock(void)
{
	I2cStart();
	I2cSend(WRITE_ADDR);
	WaitAck();
	I2cSend(CTRL_STU1);
	WaitAck();
	I2cSend(START_CLOCK);
	WaitAck();
	I2cStop();	
}


/*
 *函数性质:公共
 *入口:用于保存时钟参数的结构指针Time_T
 *出口:无
 *功能:读时钟
 */
void ReadClock(TIME_T *Time_T)
{
	I2cStart();
	I2cSend(WRITE_ADDR);
	WaitAck();
	I2cSend(SEC_REG);
	WaitAck();
	I2cStart();
	I2cSend(READ_ADDR);
	WaitAck();
	Time_T->ucSec = (I2cReceive() & 0x7f);
	SendAck();	
	Time_T->ucMin = (I2cReceive() & 0x7f);
	SendAck();
	Time_T->ucHour = (I2cReceive() & 0x3f);
	SendAck();
	Time_T->ucDay = (I2cReceive() & 0x3f);
	SendAck();
	Time_T->ucWeek = (I2cReceive() & 0x07);
	SendAck();
	Time_T->ucMonth = (I2cReceive() & 0x1f);
	SendAck();
	Time_T->ucYear = I2cReceive();
	SendNotAck();
	I2cStop();
}


/*
 *函数性质:公共
 *入口:用于写入的时钟参数结构指针Time_T
 *出口:无
 *功能:修改时钟。
 */
void WriteClock(TIME_T *Time_T)
{
	I2cStart();
	I2cSend(WRITE_ADDR);
	WaitAck();
	I2cSend(SEC_REG);
	WaitAck();
	I2cSend(Time_T->ucSec);
	WaitAck();
	I2cSend(Time_T->ucMin);
	WaitAck();
	I2cSend(Time_T->ucHour);
	WaitAck();
	I2cSend(Time_T->ucDay);
	WaitAck();
	I2cSend(Time_T->ucWeek);
	WaitAck();
	I2cSend(Time_T->ucMonth);
	WaitAck();
	I2cSend(Time_T->ucYear);
	WaitAck();
	I2cStop();
}

⌨️ 快捷键说明

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