📄 rtc.h
字号:
/************************************************************************************
* Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* Http: www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: RTC.h
* Project : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
*
* Author: 李林利
* Version: 1.20
* Date: 2007.6.1
* Email: GavinLi@126.com
*
* Description: 本文件是RTC(PCF8563)硬件驱动程序头文件;
*
* Others: none;
*
* Function List:
* 1. void RTC_Init(unsigned long clk)
* 2. unsigned char RTC_ReadReg(unsigned char addr)
* 3. void RTC_WriteReg(unsigned char addr, unsigned char val)
* 4. void RTC_ReadAllReg(RTC_REG *p)
* 5. void RTC_WriteAllReg(RTC_REG *p)
* 6. void RTC_Read(RTC_TIME *p)
* 7. void RTC_Write(RTC_TIME *p)
*
* History:
* 1. Author: 李林利
* Version: 1.10
* Date: 2007.3.12
* Modification: none
*
* 2. Author: 李林利
* Version: 1.00
* Date: 2004.11.24
* Modification: 建立文件
*
*************************************************************************************/
/*************************************************************************************
* RTC(PCF8563)硬件驱动程序函数使用说明
*
* 1. 第1步,必须先调用函数RTC_Init();该函数clk设置了PCF8563通信速度,要求在
* 50000HZ~400000HZ之间;该函数保留了PCF8563器件的默认设置;本函数只允许调用1次;
* 2. 第2步,如果要设置PCF8563器件的其它属性,请用RTC_WriteReg()和RTC_ReadAllReg()两个
* 函数重新设置,具体设置值参看PCF8563器件数据手册;RTC_ReadReg()和RTC_ReadAllReg()
* 两个函数可查看设置是否正确;
* 3. 第3步, 调用RTC_Write()函数用于修改RTC时间,
调用RTC_Read()函数用于读取RTC时间;
* 4. 其它细节详见具体函数说明;
*
*************************************************************************************/
/************************************************************************************
// 常量及全局变量定义
*************************************************************************************/
typedef struct
{
unsigned char second;
unsigned char minute;
unsigned char hour;
unsigned char day;
unsigned char week;
unsigned char month;
unsigned char year;
}RTC_TIME, *pRTC_TIME;
typedef struct
{
unsigned char ctrl_sta1;
unsigned char ctrl_sta2;
unsigned char minute_alarm;
unsigned char hour_alarm;
unsigned char day_alarm;
unsigned char week_alarm;
unsigned char clkout_ctrl;
unsigned char timer_ctrl;
unsigned char timer_value;
}RTC_REG, *pRTC_REG;
/************************************************************************************
//
// RTC(PCF8563)硬件驱动程序外部引用声明
//
*************************************************************************************/
/***********************************************************************************
* Function: RTC_Init;
*
* Description: RTC(PCF8563)时钟初始化;
*
* Input: clk, PCF8563通信速度,取值范围:50000hz~400000hz;
*
* Output: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void RTC_Init(unsigned long clk);
/***********************************************************************************
* Function: RTC_ReadReg;
*
* Description: 读PCF8563任意寄存器值;
*
* Input: addr, PCF8563寄存器地址;
*
* Output: none;
*
* Return: 返回寄存器值;
*
* Note: none;
************************************************************************************/
unsigned char RTC_ReadReg(unsigned char addr);
/***********************************************************************************
* Function: RTC_WriteReg;
*
* Description: 设置PCF8563任意寄存器值;
*
* Input: addr, PCF8563寄存器地址; val,写入的寄存器值;
*
* Output: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void RTC_WriteReg(unsigned char addr, unsigned char val);
/***********************************************************************************
* Function: RTC_ReadAllReg;
*
* Description: 读取PCF8563所有寄存器值;
*
* Input: (RTC_REG *)p, PCF8563所有寄存器结构的地址指针;
*
* Output: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void RTC_ReadAllReg(RTC_REG *p);
/***********************************************************************************
* Function: RTC_WriteAllReg;
*
* Description: 设置PCF8563所有寄存器值;
*
* Input: (RTC_REG *)p, PCF8563所有寄存器结构的地址指针;
*
* Output: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void RTC_WriteAllReg(RTC_REG *p);
/***********************************************************************************
* Function: RTC_Read;
*
* Description: 读(PCF8563)时间;
*
* Input: (RTC_TIME *)p, RTC 时间数据指针;
*
* Output: (RTC_TIME *)p, RTC 时间数据指针;
*
* Return: 0(FALSE), 读取时间无效; 1(TRUE), 读取时间正确;
*
* Note: 输出的时间数据是十六进制数而不是BCD码;
************************************************************************************/
unsigned char RTC_Read(RTC_TIME *p);
/***********************************************************************************
* Function: RTC_Write;
*
* Description: 写(PCF8563)时间;
*
* Input: (RTC_TIME *)p, RTC 时间数据指针;
*
* Output: none;
*
* Return: (RTC_TIME *)p, RTC 时间数据指针;
*
* Note: 输入的时间数据是十六进制数而不是BCD码;
************************************************************************************/
void RTC_Write(RTC_TIME *p);
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -