?? rtc.h
字號(hào):
/************************************************************************************
* Copyright (c), 2004-2007,西安銘朗電子科技有限責(zé)任公司
* 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)硬件驅(qū)動(dòng)程序頭文件;
*
* 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)硬件驅(qū)動(dòng)程序函數(shù)使用說明
*
* 1. 第1步,必須先調(diào)用函數(shù)RTC_Init();該函數(shù)clk設(shè)置了PCF8563通信速度,要求在
* 50000HZ~400000HZ之間;該函數(shù)保留了PCF8563器件的默認(rèn)設(shè)置;本函數(shù)只允許調(diào)用1次;
* 2. 第2步,如果要設(shè)置PCF8563器件的其它屬性,請用RTC_WriteReg()和RTC_ReadAllReg()兩個(gè)
* 函數(shù)重新設(shè)置,具體設(shè)置值參看PCF8563器件數(shù)據(jù)手冊;RTC_ReadReg()和RTC_ReadAllReg()
* 兩個(gè)函數(shù)可查看設(shè)置是否正確;
* 3. 第3步, 調(diào)用RTC_Write()函數(shù)用于修改RTC時(shí)間,
調(diào)用RTC_Read()函數(shù)用于讀取RTC時(shí)間;
* 4. 其它細(xì)節(jié)詳見具體函數(shù)說明;
*
*************************************************************************************/
/************************************************************************************
// 常量及全局變量定義
*************************************************************************************/
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)硬件驅(qū)動(dòng)程序外部引用聲明
//
*************************************************************************************/
/***********************************************************************************
* Function: RTC_Init;
*
* Description: RTC(PCF8563)時(shí)鐘初始化;
*
* 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: 設(shè)置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所有寄存器結(jié)構(gòu)的地址指針;
*
* Output: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void RTC_ReadAllReg(RTC_REG *p);
/***********************************************************************************
* Function: RTC_WriteAllReg;
*
* Description: 設(shè)置PCF8563所有寄存器值;
*
* Input: (RTC_REG *)p, PCF8563所有寄存器結(jié)構(gòu)的地址指針;
*
* Output: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void RTC_WriteAllReg(RTC_REG *p);
/***********************************************************************************
* Function: RTC_Read;
*
* Description: 讀(PCF8563)時(shí)間;
*
* Input: (RTC_TIME *)p, RTC 時(shí)間數(shù)據(jù)指針;
*
* Output: (RTC_TIME *)p, RTC 時(shí)間數(shù)據(jù)指針;
*
* Return: 0(FALSE), 讀取時(shí)間無效; 1(TRUE), 讀取時(shí)間正確;
*
* Note: 輸出的時(shí)間數(shù)據(jù)是十六進(jìn)制數(shù)而不是BCD碼;
************************************************************************************/
unsigned char RTC_Read(RTC_TIME *p);
/***********************************************************************************
* Function: RTC_Write;
*
* Description: 寫(PCF8563)時(shí)間;
*
* Input: (RTC_TIME *)p, RTC 時(shí)間數(shù)據(jù)指針;
*
* Output: none;
*
* Return: (RTC_TIME *)p, RTC 時(shí)間數(shù)據(jù)指針;
*
* Note: 輸入的時(shí)間數(shù)據(jù)是十六進(jìn)制數(shù)而不是BCD碼;
************************************************************************************/
void RTC_Write(RTC_TIME *p);
/***********************************************************************************/
// 文件結(jié)束
/***********************************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -