| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //ds1302.h:
- /************ DS1302程序 ************
- * 版本.........: 1.0
- * 作者.........: 陈利栋
- * 文件名.......: ds1302.h
- * 创建时间.....: 2010.11.11
- * 最后修改.....: 2010.11.11
- ************************************/
- #ifndef __DS1302_H__
- #define __DS1302_H__
- #include "main.h"
- #include <time.h>
- // 寄存器地址定义
- #define DS1302_SECOND_ADDR 0x80
- #define DS1302_MINUTE_ADDR 0x82
- #define DS1302_HOUR_ADDR 0x84
- #define DS1302_DATE_ADDR 0x86
- #define DS1302_MONTH_ADDR 0x88
- #define DS1302_DAY_ADDR 0x8a
- #define DS1302_YEAR_ADDR 0x8c
- #define DS1302_WRITE_PROTECT_ADDR 0x8e // 写保护
- #define DS1302_TRICKLE_CHARGE_ADDR 0x90 // 涓流充电
- #define DS1302_CLOCK_BURST_ADDR 0xbe // 连续读写
- #if DS1302_AUTO_TO_DEC == 1
- #define DEC_TO_BCD(d) DecToBcd(d)
- #define BCD_TO_DEC(b) BcdToDec(b)
- #else
- #define DEC_TO_BCD(d) d
- #define BCD_TO_DEC(b) b
- #endif /* DS1302_AUTO_TO_DEC == 1 */
- typedef enum
- {
- _12_hours, _24_hours
- } HourMode_t;
- typedef enum
- {
- am, pm
- } AM_PM_t;
- // DS1302日期时间结构
- typedef struct
- {
- unsigned char Year; // 年 0 - 99
- unsigned char Month; // 月 1 - 12
- unsigned char Date; // 日 1 - 31
- unsigned char Hour; // 时 1 - 12 或 0 - 23
- unsigned char Minute; // 分 0 - 59
- unsigned char Second; // 秒 0 - 59
- unsigned char Day; // 星期 1 - 7 星期天 = 7
- HourMode_t HourMode; // 小时模式 _12_hours 或 _24_hours
- AM_PM_t AM_PM; // 上午下午标志 12时制时有效 am 或 pm
- } DS1302_DateTime_t;
- // 更新标记 1:已更新 0:未更新
- // 调用 DS1302_GetDateTime 后自动清零
- extern volatile unsigned char DS1302_Update;
- /* 存放日期和时间的变量
- 执行 DS1302_GetDateTime 后 时间日期写入到该变量
- 修改此值,并执行 DS1302_SetDateTime, 更新到DS1302 */
- extern DS1302_DateTime_t DS1302_DateTime;
- // 初始化
- void DS1302_Init ( void );
- // 读取日期和时间, DS1302 -> DS1302_DateTime
- void DS1302_GetDateTime ( void );
- // 设置日期和时间, DS1302_DateTime -> DS1302
- void DS1302_SetDateTime ( void );
- unsigned char GetDayFromDate ( unsigned char year, unsigned char month, unsigned char date );
- // 扫描(轮询)函数, 扫描频率应大于1Hz
- void DS1302_Scan ( void );
- void DS1302_Key_Handler ( void );
- void Sec_TO_Date ( u32 secs );
- u32 Date_TO_Sec ( u16 year, u8 month, u8 date, u8 hour, u8 minute, u8 second );
- #endif /* __DS1302_H__ */
|