📄 ds12887.c
字号:
/*************************************************************************
文件名 :ds12887.c
作 者:eleclike
修改日期:2008-9-9
版 本:v1.00
版权说明:本程序只供学习使用,未经作者许可,不得用于其它任何用途
备 注:
**************************************************************************/
#include "My52.h"
#include "Mmi.h"
#include "ds12887.h"
uchar Month = 0;
uchar Date = 0;
uchar Year = 0;
uchar Day = 0;
uchar Hour = 0;
uchar Minute = 0;
uchar Second = 0;
uchar AlmHour =0;
uchar AlmMinute =0;
uchar AlmSecond =0;
uchar AlarmEnable=0; //报警使能
/*********************************************************
函数名称:IsInitDs12887()
函数功能:判断是否需要初始化DS12887
入口参数:无
出口参数:无
备 注:
*********************************************************/
void IsInitDs12887(void)
{
uchar t;
t = REGISTERA;
t &= 0x70; //取RegisterA的DV2-DV0
if(t != 0x20)
{
InitDs12887(); //初始化DS12887
}
}
/*********************************************************
函数名称:InitDs12887()
函数功能:初始化DS12887
入口参数:无
出口参数:无
备 注:
*********************************************************/
void InitDs12887(void)
{
uchar temp;
REGISTERB = 0x82;
//初始化闹钟
ALARM_SECOND= 0x00; //闹钟早上7点30分
ALARM_MINUTE= 0x30;
ALARM_HOUR = 0x07;
//初始化时间
TIME_SECOND= 0x13; //23:59:13
TIME_MINUTE= 0x59;
TIME_HOUR = 0x23;
TIME_DAY = 0x04; //星期四
TIME_DATE = 0x11; //08-09-11
TIME_MONTH = 0x09;
TIME_YEAR = 0x08;
//计时开始
REGISTERA = 0x20; //开始走时
REGISTERB = 0x22; //更新,允许IRQ
temp = REGISTERC; //读寄存器C,清楚IRQF
}
/*********************************************************
函数名称:ReadDs12887()
函数功能:读取DS12887各寄存器值
入口参数:无
出口参数:无
备 注:
*********************************************************/
void ReadDs12887(void)
{
AlmHour =ALARM_HOUR;
AlmMinute =ALARM_MINUTE;
AlmSecond =ALARM_SECOND;
Second = TIME_SECOND;
Minute = TIME_MINUTE;
Hour = TIME_HOUR;
Day = TIME_DAY;
Date = TIME_DATE;
Month = TIME_MONTH;
Year = TIME_YEAR;
}
/*********************************************************
函数名称:ReadAlarmFlag()
函数功能:读报警标志
入口参数:无
出口参数:无
备 注:
*********************************************************/
void ReadAlarmFlag(void)
{
uchar t;
ALARM_FLAG =1;
t = P3;
t &= (1<<3);
if(t == 0 ) //如果DS12887 IRQ为低
{
AlarmEnable = 1;
t = REGISTERC; //读RegisterC,清楚中断标志
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -