?? 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 + -