📄 rtc_ds12887.h
字号:
/*
********************************************************************************************
头部文件名: RTC_DS12887.h
头部文件名称: 实时时钟芯片 DS12887 接口驱动的头部文件
文件版本: 1.0
文件功能:
本文件是对 ATmega16 控制实时时钟芯片 DS12887 接口驱动源程序文件的常量、数据结构
类型进行定义和函数原型声明的头部文件。
文件说明:
编译工具软件: IAR Embedded Workbench for Atmel AVR 版本:3.20 以上
链接文件: 目标器件芯片的头部文件
编作者:
编作者 E-Mail: PTZSW@163.COM
编制日期: 2005年5月22日
----------------------------------------------------------------------------------------
头部文件版本历史:
2005年5月22日 -------- 版本 1.0 :发行版本
********************************************************************************************
*/
/*==========================================================================================
下面两条指令是本头部文件条件编译的预处理指令,用于防止本头部文件被其他文件重复引用。
==========================================================================================*/
#ifndef RTC_DS12887_H // "RTC_DS12887_H" 条件编译开始
#define RTC_DS12887_H
/*==========================================================================================
本头部文件包括的其他头部文件
==========================================================================================*/
#include "MCU_C_Macro_Data_Define.h" // 包含数据类型和常用指令宏定义的头部文件
/*==========================================================================================
下面这三条指令是用于区分编译系统为 C++ 或 C 的预处理指令。
"__cplusplus" 为 C++ 预处理器名字,这三条指令表明接在其下面的那些指令为 C 程序特征。
==========================================================================================*/
#ifdef __cplusplus
extern "C" {
#endif
/*==========================================================================================
实时时钟芯片 DS12887 接口的输入/输出引脚定义:
注:下列这些定义与硬件设计相关,如需改变控制的输入/输出引脚仅在此重新定义即可。
==========================================================================================*/
#define DS12887_CS_DDR DDRB // DS12887 片选控制端口的数据方向寄存器
#define DS12887_CS_PORT PORTB // DS12887 片选控制端口的数据寄存器
#define DS12887_CS_PINNum BIT7 // DS12887 的片选控制引脚数字
#define DS12887_IRQ_DDR DDRD // DS12887 中断请求端口的数据方向寄存器
#define DS12887_IRQ_PORT PORTD // DS12887 中断请求端口的数据寄存器
#define DS12887_IRQ_PINNum BIT2 // DS12887 的中断请求引脚数字
#define Buzzer_DDR DDRD // 蜂鸣器控制端口的数据方向寄存器
#define Buzzer_PORT PORTD // 蜂鸣器控制端口的数据寄存器
#define Buzzer_PINNum BIT3 // 蜂鸣器控制引脚数字
/*--------------------------------------------------------------------------------------
下列这些定义为单片机无扩展并行总线结构时,使用输入/输出引脚虚拟扩展并行总线
控制线的输入/输出引脚定义:
注:如果单片机无扩展并行总线结构时,需要在此之前使用下面这条预编译命令:
#define MCU_No_ExtendedParallelBus // 本单片机无扩展并行总线结构声明
--------------------------------------------------------------------------------------*/
#ifdef MCU_No_ExtendedParallelBus // 无扩展并行总线结构单片机的条件编译
#define VEPB_AD_DDR DDRA // 虚拟总线地址/数据总线的数据方向寄存器
#define VEPB_AD_PORT PORTA // 虚拟总线地址/数据总线的输出数据寄存器
#define VEPB_AD_PIN PINA // 虚拟总线地址/数据总线的输入数据寄存器
#define VEPB_ALE_DDR DDRB // 虚拟总线控制线地址锁存使能的数据方向寄存器
#define VEPB_ALE_PORT PORTB // 虚拟总线控制线地址锁存使能的数据寄存器
#define VEPB_ALE_PINNum BIT3 // 虚拟总线控制线地址锁存使能的引脚数字
#define VEPB_WR_DDR DDRB // 虚拟总线控制线写使能信号的数据方向寄存器
#define VEPB_WR_PORT PORTB // 虚拟总线控制线写使能信号的数据寄存器
#define VEPB_WR_PINNum BIT2 // 虚拟总线控制线写使能信号的引脚数字
#define VEPB_RD_DDR DDRB // 虚拟总线控制线读锁存信号的数据方向寄存器
#define VEPB_RD_PORT PORTB // 虚拟总线控制线读锁存信号的数据寄存器
#define VEPB_RD_PINNum BIT0 // 虚拟总线控制线读锁存信号的引脚数字
#define DS12887_Second 0x00 // DS12887 秒数据的总线输出地址数值
#define DS12887_SecAlm 0x01 // DS12887 秒闹钟数据的总线输出地址数值
#define DS12887_Minute 0x02 // DS12887 分钟数据的总线输出地址数值
#define DS12887_MinAlm 0x03 // DS12887 分钟闹钟数据的总线输出地址数值
#define DS12887_Hour 0x04 // DS12887 小时数据的总线输出地址数值
#define DS12887_HouAlm 0x05 // DS12887 小时闹钟数据的总线输出地址数值
#define DS12887_Week 0x06 // DS12887 星期数据的总线输出地址数值
#define DS12887_Date 0x07 // DS12887 日期数据的总线输出地址数值
#define DS12887_Month 0x08 // DS12887 月份数据的总线输出地址数值
#define DS12887_Year 0x09 // DS12887 年数据的总线输出地址数值
#define DS12887_REG_A 0x0A // DS12887 内部寄存器A的总线输出地址数值
#define DS12887_REG_B 0x0B // DS12887 内部寄存器B的总线输出地址数值
#define DS12887_REG_C 0x0C // DS12887 内部寄存器C的总线输出地址数值
#define DS12887_REG_D 0x0D // DS12887 内部寄存器D的总线输出地址数值
#define DS12887_Year_H 0x0E // DS12887 年数据前两位的总线输出地址数值
#define DS12887_RAM_STA 0x0F // DS12887 内部静态随机存储器的起始地址数值
#else
// 注意:在应用此定义前必须在器件芯片的头部文件中增加存储器空间大小定义。
#define DS12887_Second (*(volatile unsigned char *)(RAMEND+1))
// DS12887 秒数据寄存器的绝对地址
#define DS12887_SecAlm (*(volatile unsigned char *)(RAMEND+2))
// DS12887 秒闹钟数据寄存器的绝对地址
#define DS12887_Minute (*(volatile unsigned char *)(RAMEND+3))
// DS12887 分钟数据寄存器的绝对地址
#define DS12887_MinAlm (*(volatile unsigned char *)(RAMEND+4))
// DS12887 分钟闹钟数据寄存器的绝对地址
#define DS12887_Hour (*(volatile unsigned char *)(RAMEND+5))
// DS12887 小时数据寄存器的绝对地址
#define DS12887_HouAlm (*(volatile unsigned char *)(RAMEND+6))
// DS12887 小时闹钟数据寄存器的绝对地址
#define DS12887_Week (*(volatile unsigned char *)(RAMEND+7))
// DS12887 星期数据寄存器的绝对地址
#define DS12887_Date (*(volatile unsigned char *)(RAMEND+8))
// DS12887 日期数据寄存器的绝对地址
#define DS12887_Month (*(volatile unsigned char *)(RAMEND+9))
// DS12887 月份数据寄存器的绝对地址
#define DS12887_Year (*(volatile unsigned char *)(RAMEND+10))
// DS12887 年数据寄存器的绝对地址
#define DS12887_REG_A (*(volatile unsigned char *)(RAMEND+11))
// 访问 DS12887 内部寄存器A的绝对地址
#define DS12887_REG_B (*(volatile unsigned char *)(RAMEND+12))
// 访问 DS12887 内部寄存器B的绝对地址
#define DS12887_REG_C (*(volatile unsigned char *)(RAMEND+13))
// 访问 DS12887 内部寄存器C的绝对地址
#define DS12887_REG_D (*(volatile unsigned char *)(RAMEND+14))
// 访问 DS12887 内部寄存器D的绝对地址
#define DS12887_Year_H (*(volatile unsigned char *)(RAMEND+15))
// DS12887 年数据前两位的总线输出地址数值
#define DS12887_RAM_STA (*(volatile unsigned char *)(RAMEND+16))
// DS12887 内部静态随机存储器的起始地址
#endif // "MCU_No_ExtendedParallelBus" 条件编译结束
#define DS12887_RAM_SIZE 113 // DS12887 内部静态随机存储器容量大小【114B】
/*==========================================================================================
源程序文件中的字符化常数定义:
==========================================================================================*/
#ifndef DEFINE_ON_AND_OFF_VALUE // "DEFINE_ON_AND_OFF_VALUE" 条件编译开始
#define DEFINE_ON_AND_OFF_VALUE
#define ON 1 // 定义 ON 字符值为 1
#define OFF 0 // 定义 OFF 字符值为 0
#endif // "DEFINE_ON_AND_OFF_VALUE" 条件编译结束
/*==========================================================================================
数据结构类型定义
==========================================================================================*/
/*--------------------------------------------------------------------------------------
系统时间变量数据结构类型定义:
--------------------------------------------------------------------------------------*/
typedef struct
{
unsigned char BCD_Second; // 秒时间变量
unsigned char BCD_Minute; // 分钟时间变量
unsigned char BCD_Hour; // 小时时间变量
unsigned char BCD_Date; // 日时间变量
unsigned char BCD_Month; // 月时间变量
unsigned char BCD_Year; // 年时间变量
unsigned char BCD_Year_H; // 年前两位时间变量
unsigned char BCD_Week; // 星期时间变量
} BCD_TIME;
typedef BCD_TIME *BCD_TIME_handle; // 指向时间变量结构体的指针变量
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -