日歷時(shí)鐘DS12887或146818的C語言源程序
#define uchar unsigned char
#define uint unsigned int
#i nclude <reg52.h>
#i nclude <stdio.h>
#i nclude <absacc.h>
#i nclude <math.h>
#i nclude <string.h>
#i nclude <ctype.h>
#i nclude <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) //設(shè)置系統(tǒng)時(shí)間
{
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) //讀取系統(tǒng)時(shí)間
{
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) //啟動(dòng)時(shí)鐘
{
uchar i;
i=P12887d;
P12887a=0x70; P12887b=0xa2; P128871=0xff; P128873=0xff; P128875=0xff;
P12887b=0x22; P12887a=0x20;
i=P12887c;
}