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

📄 ds12887.c

📁 用DS12C887RTC芯片实现高精度数字时钟的1602显示
💻 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 + -