赞助论坛
  • 3898阅读
  • 0回复

学习单片机之---日历时钟DS12887/146818的C51源程序 [复制链接]

楼层直达
jswr  
发帖
339
精华
1
金币
264
威望
8
贡献
7
好评
15
注册
2008-06-30
楼主    jswr 发表于: 2008-08-06 16:01:45 
日历时钟DS12887/146818的C51源程序

#define uchar unsigned char
#define uint unsigned int
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

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