PCF8563子程序

以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!

/*********************************************************************
 微 雪 电 子   WaveShare   http://www.waveShare.net             
目    的:   建立PCF8563操作库
目标系统:   基于AVR单片机                                                
应用软件:   ICCAVR                                                     
版    本:   Version 1.0                                                      
圆版时间:   2005-06-25
开发人员:   SEE
说    明:   若用于商业用途,请保留此段文字或注明代码来源
  深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权    
*********************************************************************/

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
版本更新记录:

----------------------------------------------------------------------
入口参数说明:
//#define WR_DADR 0xA2 //器件地址:A2 A1 A0 = 0 0 0
//#define RD_DADR 0xA3 //器件地址:A2 A1 A0 = 0 0 0

----------------------------------------------------------------------
待定参数说明:

----------------------------------------------------------------------
对外变量说明:

----------------------------------------------------------------------
对外函数说明:

----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#ifndef PCF8563_H
#define PCF8563_H

#include "D:\ICC_H\CmmICC.H"
#include "D:\ICC_H\I2C.H"

//器件地址:A0 A1 A2 = 0 0 0
#ifndef WR_DADR
#define WR_DADR 0xA2 //write device-address
#endif
#ifndef RD_DADR
#define RD_DADR 0xA3 //read device-address
#endif

#define CTRL_BUF1 0x00
#define CTRL_BUF2 0x01

#define SECOND_DATA_BUF 0x02
#define MINUTE_DATA_BUF 0x03
#define HOUR_DATA_BUF 0x04

#define DAY_DATA_BUF 0x05
#define WEEK_DATA_BUF 0x06
#define MONTH_DATA_BUF 0x07
#define YEAR_DATA_BUF 0x08

#define MINUTE_AE_BUF 0x09
#define HOUR_AE_BUF 0x0A
#define DAY_AE_BUF 0x0B
#define WEEK_AE_BUF 0x0C

#define CLK_FRQ_BUF 0x0D
#define TIMER_CTRL_BUF 0x0E
#define COUNT_VAL_BUF 0x0F

#define PCF8563_ERR 0
#define PCF8563_CRR 1

/*--------------------------------------------------------------------
函数名称:
函数功能:写 1个 Byte 到相应的寄存器
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
bool WriteAByte(uint8 wordAdr,uint8 dat)
{
if( I2C_Write(WR_DADR,wordAdr,dat)==I2C_ERR )
return I2C_ERR;
return I2C_CRR;
}
/*--------------------------------------------------------------------
函数名称:
函数功能:写 N个 Byte 到相应的寄存器
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
//void WriteNByte(uint8 wordAdr,uint8 num,uint8 *pWrDat)
//{
//
//}
/*--------------------------------------------------------------------
函数名称:
函数功能:读 1个 Byte 到相应的寄存器
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
//void ReadAByte(uint8 wordAdr,uint8 *pRdDat)
//{
// I2C_Start();
//
// I2C_SendByte(WR_DADR);
// I2C_WaitAck();
//
// I2C_SendByte(wordAdr);
// I2C_WaitAck();
//
// I2C_Start();
//
// I2C_SendByte(RD_DADR);
// I2C_WaitAck();
//
// I2C_RcvByte(pRdDat);
// I2C_SendNoAck();
//
// I2C_Stop();
//}
/*--------------------------------------------------------------------
函数名称:
函数功能:读 N个 Byte 到相应的寄存器
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
bool ReadNByte(uint8 wordAdr,uint8 *pRdDat,uint8 num)
{
if( I2C_Read_(WR_DADR,wordAdr,RD_DADR,pRdDat,num)==I2C_ERR )
return I2C_ERR;
return I2C_CRR;
}
/*--------------------------------------------------------------------
函数名称:
函数功能:获取PCF8563的时间
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void PCF8563_getTime(uint8 *buf)
{
ReadAgain:
ReadNByte(SECOND_DATA_BUF,buf,3);
buf[0]=buf[0]&0x7f; //get second data
if(buf[0]==0)
goto ReadAgain; //if "second==0",read again for avoid mistake
buf[1]=buf[1]&0x7f; //get minute data
buf[2]=buf[2]&0x3f; //get hour data

buf[0]=changeHexToInt(buf[0]);
buf[1]=changeHexToInt(buf[1]);
buf[2]=changeHexToInt(buf[2]);
}
/*--------------------------------------------------------------------
函数名称:
函数功能:设置PCF8563的时间
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void PCF8563_setTime(uint8 hour,uint8 minute,uint8 second)
{
hour=changeIntToHex(hour); //将数据的Dex格式转换为Hex格式
minute=changeIntToHex(minute);
second=changeIntToHex(second);

WriteAByte(HOUR_DATA_BUF,hour);
WriteAByte(MINUTE_DATA_BUF,minute);
WriteAByte(SECOND_DATA_BUF,second);
}
/*--------------------------------------------------------------------
函数名称:
函数功能:获取PCF8563的日期
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
//void PCF8563_getDate()
//{
//
//}
/*--------------------------------------------------------------------
函数名称:
函数功能:设置PCF8563的日期
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
//void PCF8563_setDate()
//{
//
//}
/*--------------------------------------------------------------------
函数名称:
函数功能:初始化PCF8563
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void PCF8563_init()
{
WriteAByte(CTRL_BUF1,0x00); //basic setting
WriteAByte(CTRL_BUF2,0x12); //alarm enable
//WriteAByte(HOUR_AE_BUF,0x09); //set alarm hour at 9:00
//WriteAByte(CLK_FRQ_BUF,0xf0); //set clkout frequency
}

#endif

 

 相关AVR资料说明

可作为如下AVR的参考资料: ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny2313 ATtiny26 ATmega48 ATmega88 ATmega168 ATmega8 ATmega16 ATmega32 ATmega64 ATmega128 ATmega162 ATmega169 ATmega169P ATmega8515 ATmega8535

 相关AVR型号资料

ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny26 ATtiny2313
ATmega48 ATmega88 ATmega168 ATmega8 ATmega16 ATmega32
ATmega64 ATmega128 ATmega162 ATmega169 ATmega8515 ATmega8535

PCF8563子程序

——