教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

时钟芯片ds12c887的程序

来源:网络收集 时间:2026-08-12
导读: ds12c887芯片的应用程序 日历时钟DS12887或146818的C语言源程序 #include reg52.h #include stdio.h #include absacc.h #include math.h #include string.h #include ctype.h #include stdlib.h #define uchar unsigned char #define uint unsigned int #def

ds12c887芯片的应用程序

日历时钟DS12887或146818的C语言源程序

#include <reg52.h>

#include <stdio.h>

#include <absacc.h>

#include <math.h>

#include <string.h>

#include <ctype.h>

#include <stdlib.h>

#define uchar unsigned char

#define uint unsigned int

#define P128870 XBYTE[0xa000]

#define P128871 XBYTE[0xa001]

#define P128872 XBYTE[0xa002]

#define P128873 XBYTE[0xa003]

#define P128874 XBYTE[0xa004]

#define P128875 XBYTE[0xa005]

#define P128876 XBYTE[0xa006]

#define P128877 XBYTE[0xa007]

#define P128878 XBYTE[0xa008]

#define P128879 XBYTE[0xa009]

#define P12887a XBYTE[0xa00a]

#define P12887b XBYTE[0xa00b]

#define P12887c XBYTE[0xa00c]

#define P12887d XBYTE[0xa00d]

#define P12887e XBYTE[0xa00e]

#define P12887f XBYTE[0xa00f]

void setup12887(uchar *p);

void read12887(uchar *p);

void start12887(void);

void setup12887(uchar *p) //设置系统时间

{

uchar i;

i=P12887d;

P12887a=0x70; P12887b=0xa2; P128870=*p++; P128871=0xff; P128872=*p++; P128873=0xff; P128874=*p++; P128875=0xff; P128876=*p++; P128877=*p++; P128878=*p++; P128879=*p++; P12887b=0x22; P12887a=0x20;

i=P12887c;

}

void read12887(uchar *p) //读取系统时间

{

uchar a;

ds12c887芯片的应用程序

do{ a=P12887a; } while((a&0x80)==0x80);

*p++=P128870; *p++=P128872; *p++=P128874; *p++=P128876;

*p++=P128877; *p++=P128878; *p++=P128879;

}

void start12887(void) //启动时钟

{

uchar i;

i=P12887d;

P12887a=0x70; P12887b=0xa2; P128871=0xff; P128873=0xff; P128875=0xff; P12887b=0x22; P12887a=0x20;

i=P12887c;

}

/*************************************************************

文件名称:ds12c887.c

适用范围:时钟芯片ds12c887的驱动程序

*************************************************************/

#include <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;

ds12c887芯片的应用程序

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;

}

/*************************************************************

函数功能:该函数用来关闭时钟芯片

应用范围:一般用不到

入口参数:

出口参数:

*************************************************************/

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);

}

…… 此处隐藏:4386字,全部文档内容请下载后查看。喜欢就下载吧 ……

时钟芯片ds12c887的程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1705926.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)