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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

#define uchar unsigned char

#define uint unsigned int

#include

#include

#include

#include

#include

#include

#include

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

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;

}

这些地址,不要直接在代码中使用,应该在前面用EQU/BIT等定义成某个顾名思义的字符串,(0字)坏蛋[11次]2004-1-4 22:30:09 抄来的用的挺好!根据你的需要改改(16006字)gao_bc[18次]2004-1-5 10:51:21

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

文件名称:ds12c887.c

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

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

#include

/* 命令常量定义*/

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

相关文档
最新文档