⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcf8563.h

📁 PCF8563T串行时钟芯片的驱动程序
💻 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 + -