📄 pcf8563.c
字号:
#include "config.h"
#include "i2cint.h"
#define __SRC
#include"PCF8563.h"
#undef __SRC
#define ADDR_PCF8563 0xA2
/*********************************************************
函数名: WriteTimeToPCF8563
功能:向8563写入时间
参数:
pData[0]:秒
pData[1]:分
pData[2]:时
pData[3]:日
pData[4]:周
pData[5]:月
pData[6]:年
*********************************************************/
void WriteTimeToPCF8563(uint8 * pData)
{
uint8 tmpbuf[9];
uint8 i;
uint8 ex_iic_addr;
ex_iic_addr=0;
for(i=0;i<7;i++)
{
tmpbuf[i+2]=(*(pData+i));
}
tmpbuf[0]=0x00; //设置PFC8563的状态寄存器1
tmpbuf[1]=0x1f; //设置PFC8563的状态寄存器2
ISendStr(ADDR_PCF8563,ex_iic_addr,tmpbuf,9);
//ISendStr(ADDR_PCF8563,ex_iic_addr,tmpbuf,9);
//4个参数分别为:器件地址,器件子地址,缓冲区起始地址
}
/*********************************************************
函数名: ReadTimeFromPCF8563
功能:从8563读出数据
参数:
pData[0]:秒
pData[1]:分
pData[2]:时
pData[3]:日
pData[4]:周
pData[5]:月
pData[6]:年
*********************************************************/
void ReadTimeFromPCF8563(uint8 * pData)
{
uint8 tmpbuf[9];
uint8 ex_addr_iic_pcf8563,i;
ex_addr_iic_pcf8563=2;//从第2单元地址开始读取数据
//I2cRead(ADDR_PCF8563,tmpbuf,&ex_addr_iic_pcf8563,1,7);
IRcvStr(ADDR_PCF8563, ex_addr_iic_pcf8563, tmpbuf, 7);
for(i=0;i<7;i++)
{
(*(pData+i))=tmpbuf[i];
}
}
/*****************************************************
函数名:ChangePCF8563_BCD_to_HEX
功能:
pData[0]:秒
pData[1]:分
pData[2]:时
pData[3]:日
pData[4]:周
pData[5]:月
pData[6]:年
*******************************************************/
void ChangePCF8563_BCD_to_HEX(uint8 * pData) //转换的长度固定为7个字节
{
uint8 i;
pData[0]=pData[0]&0x7f;//秒
pData[1]=pData[1]&0x7f;//分
pData[2]=pData[2]&0x3f;//时
pData[3]=pData[3]&0x3f;//日
pData[4]=pData[4]&0x07;//周
pData[5]=pData[5]&0x1f;//月
pData[6]=pData[6]&0xff;//年
for(i=0;i<7;i++)
{
pData[i]=(pData[i]/16*10)+(pData[i]%16);
}
}
void ChangeHEX_to_PCF8563_BCD(uint8 * pData)
{
uint8 i;
for(i=0;i<7;i++)
{
pData[i]=(pData[i]/10*16)+(pData[i]%10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -