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

📄 rtc_ds12887.h

📁 本程序是用 ATmega16 控制实时时钟芯片 DS12887 接口驱动的源程序文件。
💻 H
📖 第 1 页 / 共 2 页
字号:

#define BCD_TIME_defaults { 0, \
                            0, \
                            0, \
                            0, \
                            0, \
                            0, \
                            0, \
                            0 }               // 系统时间各变量的默认初始化值


/*==========================================================================================
                                     全局和静态变量定义
==========================================================================================*/
/*--------------------------------------------------------------------------------------
时间消息的任务变量的各位定义如下:
  ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┓
  ┃  BIT7  ┃  BIT6  ┃  BIT5  ┃  BIT4  ┃  BIT3  ┃  BIT2  ┃  BIT1  ┃  BIT0  ┃
  ┣━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━┫
  ┃  保留  ┃  保留  ┃  保留  ┃  保留  ┃  保留  ┃蜂鸣声响┃闹钟告警┃时间更新┃
  ┗━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┛
--------------------------------------------------------------------------------------*/
static volatile unsigned char tasks_time;           // 时间消息的任务变量

static volatile unsigned int buzzer_alarm_counter;  // 蜂鸣器发出声响次数

static BCD_TIME time = BCD_TIME_defaults;           // 系统时间结构变量


/*==========================================================================================
RTC_DS12887.c 源程序文件中的函数原型声明:
==========================================================================================*/
/*--------------------------------------------------------------------------------------
函数功能:    本函数用于控制蜂鸣器发出声响告警的操作,设定蜂鸣器频率为 2000Hz 。
备注:        蜂鸣器设置为相应的控制引脚高电平时,蜂鸣器发出声响。
--------------------------------------------------------------------------------------*/
void Buzzer(void);

#ifdef MCU_No_ExtendedParallelBus             // 无扩展并行总线结构单片机的条件编译
/*--------------------------------------------------------------------------------------
函数功能:    本函数用于虚拟扩展并行总线结构的向外围器件写入数据操作。
函数入口参数:AccessAddress ------ 访问的外围器件地址。
              WriteData ---------- 写入的数据。
备注:        本函数仅可访问外围器件的地址数不超过256个。
--------------------------------------------------------------------------------------*/
void VEPB_WriteData(volatile unsigned char AccessAddress, volatile unsigned char WriteData);

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于虚拟扩展并行总线结构的从外围器件读取数据操作。
函数入口参数:AccessAddress ------ 访问的外围器件地址。
函数出口参数:读取的数据。
备注:        本函数仅可访问外围器件的地址数不超过256个。
--------------------------------------------------------------------------------------*/
unsigned char VEPB_ReadData(volatile unsigned char AccessAddress);
#endif                                        // "MCU_No_ExtendedParallelBus" 条件编译结束

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于外部中断请求0中断向量的初始化操作。
备注:        ①.本函数仅在主函数中调用一次即可。
              ②.要使能中断还必须在主程序中打开全局中断使能功能,推荐其指令如下:
                  SREG |= BIT7;                               // 使能全局中断
--------------------------------------------------------------------------------------*/
void external_INT0_initialization(void);

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于 DS12887 闹钟中断请求和更新周期结束中断请求处理的中断服务程序。
备注:        ①.注意:由于本函数为中断函数,故在调用和返回时无法进行明式数值传递,
                  因此将在函数体中隐式修改下面这几个全局静态变量数值。
                  ⑴.时间消息的任务变量(tasks_time),用以通知系统执行相应的处理操作。
                  ⑵.系统时间结构变量(time),从 DS12887 中读取更新的系统时间数值。
              ②.本函数需在设置的 DS12887 中断请求的中断向量函数中调用。在调用之前
                  需对该中断向量进行初始化,以使能该中断。例:如使用外部中断请求0,
                  可使用上面提供的 external_INT0_initialization() 函数进行初始化,
                  而将本本函数放在外部中断请求0服务程序中。
--------------------------------------------------------------------------------------*/
void DS12887_INT_ISR(void);

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于 DS12887 的各控制输入/输出引脚定义和初始状态设置的初始化操作。
备注:        本函数仅在主函数中调用一次即可。
--------------------------------------------------------------------------------------*/
void RTC_DS12887_initialization(void);

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于修改设置 DS12887 各个时标寄存器的时间数值(BCD 码)操作。
函数入口参数:SET_BCD_Year_H ------ 设置的年前两位时间数值(BCD码)。
              SET_BCD_Year -------- 设置的年时间数值(BCD码)。
              SET_BCD_Month ------- 设置的月份时间数值(BCD码)。
              SET_BCD_Date -------- 设置的日期时间数值(BCD码)。
              SET_BCD_Hour -------- 设置的小时时间数值(BCD码)。
              SET_BCD_Minute ------ 设置的分钟时间数值(BCD码)。
              SET_BCD_Second ------ 设置的秒时间数值(BCD码)。
              SET_BCD_Week -------- 设置的星期时间数值(BCD码)。
备注:
--------------------------------------------------------------------------------------*/
void SET_DS12887_TimeRegister(volatile unsigned char SET_BCD_Year_H,  // 年前两位
                              volatile unsigned char SET_BCD_Year,    // 年
                              volatile unsigned char SET_BCD_Month,   // 月份
                              volatile unsigned char SET_BCD_Date,    // 日期
                              volatile unsigned char SET_BCD_Hour,    // 小时
                              volatile unsigned char SET_BCD_Minute,  // 分钟
                              volatile unsigned char SET_BCD_Second,  // 秒
                              volatile unsigned char SET_BCD_Week);   // 星期

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于控制 DS12887 闹钟打开/关闭的操作。
函数入口参数:AC_status ------ 仅可取二个值 ON 或 OFF 中的一个。
--------------------------------------------------------------------------------------*/
void DS12887_AlarmClock(unsigned char AC_status);

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于设置 DS12887 闹钟各个时标寄存器的时间数值(BCD 码)操作。
函数入口参数:SET_BCD_HouAlm ------ 设置的分钟闹钟时间数值(BCD码)。
              SET_BCD_MinAlm ------ 设置的小时闹钟时间数值(BCD码)。
备注:        ①.设置 DS12887 闹钟各个时标寄存器的时间数值后,将打开闹钟告警中断。
              ②.本函数将秒闹钟时间数值自动设置为0秒。
--------------------------------------------------------------------------------------*/
void SET_DS12887_AlarmClock(unsigned char SET_BCD_HouAlm, unsigned char SET_BCD_MinAlm);

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于闹钟告警中断的任务时间消息处理操作。
函数入口参数:BAC_number ------ 蜂鸣器发出声响次数值。
              本函数还将在函数体中检查隐含的全局静态变量参数变量 tasks_time
              (时间消息的任务)位1的布尔值而执行发出声响告警操作。
备注:        ①.本函数需要放在主函数的不间断循环体中运行。
              ②.本函数在执行过程中将修改 tasks_time(时间消息的任务)变量的位1
                  和位2,与 buzzer_alarm_counte(蜂鸣器发出声响次数)变量的数值。
--------------------------------------------------------------------------------------*/
void Tasks_AlarmClock(unsigned int BAC_number);

/*--------------------------------------------------------------------------------------
函数功能:    本函数用于时间更新中断的任务时间消息处理操作。
函数入口参数:LCDM_ShowMode --- 在液晶上显示日期和时间的点阵字符样式选择值。
                                共有下列两种选择值和点阵字符样式供选择:
                                入口参数= 8  :8×16点阵字符样式。
                                入口参数= 16 :16×16点阵字符样式。
              本函数还将在函数体中检查隐含的全局静态变量参数变量 tasks_time
              (时间消息的任务)位0的布尔值而执行时间更新操作。
备注:        ①.本函数需要放在主函数的不间断循环体中运行。
              ②.本函数在执行过程中将修改 tasks_time(时间消息的任务)变量的位0。
--------------------------------------------------------------------------------------*/
void Tasks_TimeUpdate(unsigned char LCDM_ShowMode);



/*==========================================================================================
下面这三条指令是用于与上面三条区分编译系统为 C++ 或 C 的预处理指令相对应。用于指定
 extern "C" 链接指示符作用域,此处的"}"与上面的"{"相对应,为链接指示符作用结束符。
==========================================================================================*/
#ifdef __cplusplus
}
#endif


#endif                                        // "RTC_DS12887_H" 条件编译结束



/*
********************************************************************************************
                                     本头部文件到此结束
********************************************************************************************
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -