📄 pcf8563.c
字号:
/**************************************************************
*文件名:PCF8563.c
*描述:提供8563的底层驱动。
*日期:2004/12/31
*************************************************************/
#define PCF8563_C
#include "config.h"
/*************************************************************
*函数性质:公共
*入口:无
*出口:无
*功能:启动8563时钟
*************************************************************/
void StartClock(void)
{
SCS = 0x03;
I2C_Init();
I2C_Start();
I2C_Write(WRITE_ADDR);
I2C_GetAck();
I2C_Write(CTRL_STU1);
I2C_GetAck();
I2C_Write(START_CLOCK);
I2C_GetAck();
I2C_Stop();
}
/**************************************************************
*函数性质:公共
*入口:用于保存时钟参数的结构指针Time_T
*出口:无
*功能:读时钟
**************************************************************/
void ReadClock(TIME_T *Time_T)
{
I2C_Start();
I2C_Write(WRITE_ADDR);
I2C_GetAck();
I2C_Write(SEC_REG);
I2C_GetAck();
I2C_Start();
I2C_Write(READ_ADDR);
I2C_GetAck();
Beep(20);
Time_T->ucSec = (I2C_Read() & 0x7f);
I2C_PutAck(0);
Time_T->ucMin = (I2C_Read() & 0x7f);
I2C_PutAck(0);
Time_T->ucHour = (I2C_Read() & 0x3f);
I2C_PutAck(0);
Time_T->ucDay = (I2C_Read() & 0x3f);
I2C_PutAck(0);
Time_T->ucWeek = (I2C_Read() & 0x07);
I2C_PutAck(0);
Time_T->ucMonth = (I2C_Read() & 0x1f);
I2C_PutAck(0);
Time_T->ucYear = I2C_Read();
I2C_PutAck(1);
I2C_Stop();
}
/*************************************************************
*函数性质:公共
*入口:用于写入的时钟参数结构指针Time_T
*出口:无
*功能:修改时钟。
**************************************************************/
void WriteClock(TIME_T *Time_T)
{
I2C_Start();
I2C_Write(WRITE_ADDR);
I2C_GetAck();
I2C_Write(SEC_REG);
I2C_GetAck();
I2C_Write(Time_T->ucSec);
I2C_GetAck();
I2C_Write(Time_T->ucMin);
I2C_GetAck();
I2C_Write(Time_T->ucHour);
I2C_GetAck();
I2C_Write(Time_T->ucDay);
I2C_GetAck();
I2C_Write(Time_T->ucWeek);
I2C_GetAck();
I2C_Write(Time_T->ucMonth);
I2C_GetAck();
I2C_Write(Time_T->ucYear);
I2C_GetAck();
I2C_Stop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -