51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
DS12887时钟驱动程序
发布时间:2009/6/2  阅读次数:708  字体大小: 【】 【】【

[转载]DS12887时钟驱动程序

推荐DS12887时钟驱动程序
/*************************************************************
文件名称:ds12c887.c
适用范围:时钟芯片ds12c887的驱动程序
*************************************************************/    
#i nclude <absacc.h>

/* 命令常量定义 */
#define CMD_START_DS12C887         0x20                       /* 开启时钟芯片
*/
#define CMD_START_OSCILLATOR 0x70                       /* 开启振荡器,
处于抑制状态 */
#define CMD_CLOSE_DS12C887         0x30                       /* 关掉时钟芯片
*/
/* 所有的置位使用或操作,清除使用与操作 */
#define MASK_SETB_SET                 0x80                       /* 禁止刷新 */
#define MASK_CLR_SET                 0x7f                       /* 使能刷新 */
#define MASK_SETB_DM                 0x04                       /* 使用HEX格式
*/
#define MASK_CLR_DM                         0xfb                       /* 使
用BCD码格式 */
#define MASK_SETB_2412                 0x02                       /* 使
用24小时模式 */
#define MASK_CLR_2412                 0xfd                       /* 使用12小时模
式 */
#define MASK_SETB_DSE                 0x01                       /* 使用夏令时 */
#define MASK_CLR_DSE                 0xfe                       /* 不使用夏令时
*/

/* 寄存器地址通道定义 */
xdata char chSecondsChannel _at_ 0xdf00;
xdata char chMinutesChannel _at_ 0xdf02;
xdata char chHoursChannel     _at_ 0xdf04;
xdata char chDofWChannel       _at_ 0xdf06;
xdata char chDateChannel       _at_ 0xdf07;
xdata char chMonthChannel     _at_ 0xdf08;
xdata char chYearChannel       _at_ 0xdf09;
xdata char chCenturyChannel _at_ 0xdf32;
xdata char chRegA       _at_ 0xdf0a;
xdata char chRegB       _at_ 0xdf0b;
xdata char chRegC       _at_ 0xdf0c;
xdata char chRegD       _at_ 0xdf0d;

/* 函数声明部分 */
void StartDs12c887(void);
void CloseDs12c887(void);
void InitDs12c887(void);
unsigned char GetSeconds(void);
unsigned char GetMinutes(void);
unsigned char GetHours(void);
unsigned char GetDate(void);
unsigned char GetMonth(void);
unsigned char GetYear(void);
unsigned char GetCentury(void);
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char
chHours);
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear);

/*************************************************************
函数功能:该函数用来启动时钟芯片工作
应用范围:仅在时钟芯片首次使用时用到一次
入口参数:
出口参数:
*************************************************************/    
void StartDs12c887(void)
{
       chRegA = CMD_START_DS12C887;
}

/*************************************************************
函数功能:该函数用来关闭时钟芯片
应用范围:一般用不到
入口参数:
出口参数:
*************************************************************/    
void CloseDs12c887(void)
{
       chRegA = CMD_CLOSE_DS12C887;
}

void InitDs12c887()
{
       StartDs12c887();
       chRegB = chRegB | MASK_SETB_SET;               /* 禁止刷新 */
       chRegB = chRegB & MASK_CLR_DM | MASK_SETB_2412 \
                                       & MASK_CLR_DSE;
                                                      
                               /* 使用BCD码格式、24小时模式、不使用
夏令时 */
       chCenturyChannel = 0x21;                               /* 设
置为21世纪 */
       chRegB = chRegB & MASK_CLR_SET;                       /* 使能刷新 */
}

/*************************************************************
函数功能:该函数用来从时钟芯片读取秒字节
应用范围:
入口参数:
出口参数:
*************************************************************/    
unsigned char GetSeconds(void)
{
       return(chSecondsChannel);
}

/*************************************************************
函数功能:该函数用来从时钟芯片读取分字节
应用范围:
入口参数:
出口参数:
*************************************************************/    
unsigned char GetMinutes(void)
{
       return(chMinutesChannel);
}

/*************************************************************
函数功能:该函数用来从时钟芯片读取小时字节
应用范围:
入口参数:
出口参数:
*************************************************************/    
unsigned char GetHours(void)
{
       return(chHoursChannel);
}

/*************************************************************
函数功能:该函数用来从时钟芯片读取日字节
应用范围:
入口参数:
出口参数:
*************************************************************/    
unsigned char GetDate(void)
{
       return(chDateChannel);
}
/*************************************************************
函数功能:该函数用来从时钟芯片读取月字节
应用范围:
入口参数:
出口参数:
*************************************************************/    
unsigned char GetMonth(void)
{
       return(chMonthChannel);
}

/*************************************************************
函数功能:该函数用来从时钟芯片读取年字节
应用范围:
入口参数:
出口参数:
*************************************************************/    
unsigned char GetYear(void)
{
       return(chYearChannel);
}

/*************************************************************
函数功能:该函数用来从时钟芯片读取世纪字节
应用范围:
入口参数:
出口参数:
*************************************************************/    
unsigned char GetCentury(void)
{
       return(chCenturyChannel);
}      

/*************************************************************
函数功能:该函数用来设置时钟芯片的时间
应用范围:
入口参数:chSeconds、chMinutes、chHours是设定时间的压缩BCD码
出口参数:
*************************************************************/    
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char
chHours)
{
       chRegB = chRegB | MASK_SETB_SET;               /* 禁止刷新 */
       chSecondsChannel = chSeconds;
       chMinutesChannel = chMinutes;
       chHoursChannel = chHours;
       chRegB = chRegB & MASK_CLR_SET;                       /* 使能刷新 */
}

/*************************************************************
函数功能:该函数用来设置时钟芯片的日期
应用范围:
入口参数:chDate、chMonth、chYear是设定日期的压缩BCD码
出口参数:
*************************************************************/    
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear)
{
       chRegB = chRegB | MASK_SETB_SET;               /* 禁止刷新 */
       chDateChannel = chDate;
       chMonthChannel = chMonth;
       chYearChannel = chYear;
       chRegB = chRegB & MASK_CLR_SET;                       /* 使能刷新 */

}


  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号