📄 pcf8563.h
字号:
/*
*********************************************************************************************************
*
* 低成本汇率电子显示屏控制系统的开发
* 独立本科段毕业设计
*
* Since 2004 - 2005
* All Rights Reserved.
*
*
*------------------------------------------文件信息------------------------------------------------------
*
* 文件名 : PCF8563.H
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 描 述 : PCF8563实时时钟芯片的API函数库,仅供外部函数调用。
*
*------------------------------------------日志记录------------------------------------------------------
*
* 版 本 : V1.00 格式说明: 主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 文件建立。
*
*********************************************************************************************************
*/
#ifndef _RTC_PCF8563_
#define _RTC_PCF8563_
/*
*********************************************************************************************************
* 数据结构 *
*********************************************************************************************************
*/
typedef struct { // (BCD CODE.)
INT8U sec; // 0 -- 59 Seconds.
INT8U min; // 0 -- 59 Minutes.
INT8U hour; // 0 -- 23 Hours.
INT8U day; // 1 -- 31 Days.
INT8U week; // 0 -- 6 0 = Sunday.
INT8U month; // 1 -- 12 Month.
INT16U year; // BASE_YEAR -- BASE_YEAR + 199 Years.
}TIME;
/*
*********************************************************************************************************
* 宏定义函数 *
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void OpenAlarm(void);
* 参数表 : none
* 返回值 : none
* 功 能 : 打开闹钟报警器 AIE = 1 ,软件清AF为0。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define OpenAlarm( ) { SetPCF8563(0x01, GetPCF8563(0x01) | 0x02); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void SetAlarm(INT8U type, INT8U ch);
* 参数表 : type: 要读的时间类型。
* 0x09: minute; 0x0A: hour; 0x0B: day; 0x0C: week;
* ch: 要设置的时间值(BCD格式)。
* 返回值 : none
* 功 能 : 设置闹钟报警。例如:SetAlarm(0x0A, 23); // 在晚上11点报警。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.01
* 作 者 : li.yao
* 日 期 : 2005年 02月 28日,星期一
* 变 更 : 增加了错误类型的返回值。
*
*--------------------------------------------------------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define SetAlarm(type, ch) { SetPCF8563(type, ch + 0x80); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void CloseAlarm(void);
* 参数表 : none
* 返回值 : none
* 功 能 : 关闭闹钟报警器 AIE = 0 。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define CloseAlarm( ) { SetPCF8563(0x01, GetPCF8563(0x01) & 0xFD); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void OpenTimer(void);
* 参数表 : none
* 返回值 : none
* 功 能 : 打开定时器中断 TIE = 1 ,软件清TF为0。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define OpenTimer( ) { SetPCF8563(0x01, GetPCF8563(0x01) | 0x01); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void SetTimer(INT8U freq, INT8U count);
* 参数表 : freq: 设置定时器的时钟频率。
* 0x00: 4096Hz; 0x01: 64Hz; 0x02: 1Hz; 0x03: 1/60Hz;
* count: 设置定时器的计数值。0x00 ~ 0xFF;
* 返回值 : none
* 功 能 : 设置定时器的定时值。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define SetTimer(freq, count) { SetPCF8563(0x0E, freq + 0x80); SetPCF8563(0x0F, count); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void CloseTimer(void);
* 参数表 : none
* 返回值 : none
* 功 能 : 关闭定时器中断 TIE = 0 。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define CloseTimer( ) { SetPCF8563(0x01, GetPCF8563(0x01) & 0xFE); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void OpenClkOut(INT8U count);
* 参数表 : count: 设置输出的频率。
* 0x00: 32.768kHz; 0x01: 1024Hz; 0x02: 32Hz; 0x03: 1Hz;
* 返回值 : none
* 功 能 : 打开时钟引脚的输出。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define OpenClkOut(count) { SetPCF8563(0x0D, count + 0x80); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void CloseClkOut(void);
* 参数表 : none
* 返回值 : none
* 功 能 : 关闭时钟引脚的输出。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define CloseClkOut( ) { SetPCF8563(0x0D, 0x00); }
/*
*********************************************************************************************************
* 函数说明
*
* 函数名 : void IntOutput(INT8U type);
* 参数表 : type: 中断类型。
* 0x00: 低电平有效;0x01: 跳沿有效,输出一个脉冲,不用对AF和TF清零。
* 返回值 : none
* 功 能 : 选择中断的触发类型。
*
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
*
*-----------------------------------------日志记录-------------------------------------------------------
*
* 版 本 : V1.00 格式说明:主版本号 . 升级版本号 + 内部测试版本号
* 作 者 : li.yao
* 日 期 : 2004年 05月 13日,星期四
* 变 更 : 函数建立。
*
*********************************************************************************************************
*/
#define IntOutput(type) \
{ \
if (type > 0) \
SetPCF8563(0x01, GetPCF8563(0x01) | 0x08); \
else \
SetPCF8563(0x01, GetPCF8563(0x01) & 0xF7); \
} \
/*
*********************************************************************************************************
* 函数声明 *
*********************************************************************************************************
*/
INT8U GetPCF8563(INT8U addr);
void SetPCF8563(INT8U addr, INT8U ch);
INT8U SetClock(TIME *time);
INT8U GetClock(TIME *time);
#endif
/*
*********************************************************************************************************
* 文件结束 *
*********************************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -