日历时钟ds12887或146818的c语言源程序

上传人:自*** 文档编号:80695032 上传时间:2019-02-19 格式:DOC 页数:3 大小:69.30KB
返回 下载 相关 举报
日历时钟ds12887或146818的c语言源程序_第1页
第1页 / 共3页
日历时钟ds12887或146818的c语言源程序_第2页
第2页 / 共3页
日历时钟ds12887或146818的c语言源程序_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《日历时钟ds12887或146818的c语言源程序》由会员分享,可在线阅读,更多相关《日历时钟ds12887或146818的c语言源程序(3页珍藏版)》请在金锄头文库上搜索。

1、日历时钟DS12887或146818的C语言源程序#define uchar unsigned char#define uint unsigned int#include #include #include #include #include #include #include #define P128870 XBYTE0xa000#define P128871 XBYTE0xa001#define P128872 XBYTE0xa002#define P128873 XBYTE0xa003#define P128874 XBYTE0xa004#define P128875 XBYTE0xa0

2、05#define P128876 XBYTE0xa006#define P128877 XBYTE0xa007#define P128878 XBYTE0xa008#define P128879 XBYTE0xa009#define P12887a XBYTE0xa00a#define P12887b XBYTE0xa00b#define P12887c XBYTE0xa00c#define P12887d XBYTE0xa00d#define P12887e XBYTE0xa00e#define P12887f XBYTE0xa00fvoid setup12887(uchar *p);vo

3、id 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 rea

4、d12887(uchar *p) /读取系统时间uchar a;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=P1

5、2887c;这些地址,不要直接在代码中使用,应该在前面用EQU/BIT等定义成某个顾名思义的字符串,(0字)坏蛋11次2004-1-4 22:30:09抄来的用的挺好!根据你的需要改改(16006字)gao_bc18次2004-1-5 10:51:21/* 文件名称:ds12c887.c适用范围:时钟芯片ds12c887的驱动程序*/#include /* 命令常量定义 */#define CMD_START_DS12C8870x20/* 开启时钟芯片 */#define CMD_START_OSCILLATOR 0x70/* 开启振荡器,处于抑制状态 */#define CMD_CLOSE_

6、DS12C8870x30/* 关掉时钟芯片 */* 所有的置位使用或操作,清除使用与操作 */#define MASK_SETB_SET0x80/* 禁止刷新 */#define MASK_CLR_SET0x7f/* 使能刷新 */#define MASK_SETB_DM0x04/* 使用HEX格式 */#define MASK_CLR_DM0xfb/* 使用BCD码格式 */#define MASK_SETB_24120x02/* 使用24小时模式 */#define MASK_CLR_24120xfd/* 使用12小时模式 */#define MASK_SETB_DSE0x01/* 使用夏

7、令时 */#define MASK_CLR_DSE0xfe/* 不使用夏令时 */* 寄存器地址通道定义 */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 chYearCh

8、annel_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 c

9、har 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 ch

10、Month,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;/* 禁止刷新

11、 */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);/* 函数功能:该函数用来从时钟芯片读取小时字节应用范围:入口参数:出口参数:*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号