#include <absacc.h>
//BCD码转换
#define NUM2BCD(x) ((((x)/10)<<4)|(x%10))
#define BCD2NUM(x) (((x)>>4)*10+((x)&0x0f))
//时钟寄存器
#define TIME_SECOND XBYTE[0xff00]
#define TIME_MINUTE XBYTE[0xff02]
#define TIME_HOUR XBYTE[0xff04]
#define TIME_DAY XBYTE[0xff06]
#define TIME_DATE XBYTE[0xff07]
#define TIME_MONTH XBYTE[0xff08]
#define TIME_YEAR XBYTE[0xff09]
//控制寄存器
#define REGISTERA XBYTE[0xff0A]
#define REGISTERB XBYTE[0xff0B]
#define REGISTERC XBYTE[0xff0C]
#define REGISTERD XBYTE[0xff0D]
unsigned char Time[]={0,0,0,1,1,10}; //时钟数组
//设置DS12C887
SetupDs12887(void)
{
REGISTERA = 0x70;
REGISTERB = 0xa2;
//设置时间
TIME_SECOND= NUM2BCD(Time[0]);
TIME_MINUTE= NUM2BCD(Time[1]);
TIME_HOUR = NUM2BCD(Time[2]);
TIME_DATE = NUM2BCD(Time[3]);
TIME_MONTH = NUM2BCD(Time[4]);
TIME_YEAR = NUM2BCD(Time[5]);
//计时开始
REGISTERA = 0x20; //开始走时
REGISTERB = 0x22;
}
//读出DS12C887
void ReadDs12887(void)
{
Time[0] = BCD2NUM(TIME_SECOND);
Time[1] = BCD2NUM(TIME_MINUTE);
Time[2] = BCD2NUM(TIME_HOUR);
Time[3] = BCD2NUM(TIME_DATE);
Time[4] = BCD2NUM(TIME_MONTH);
Time[5] = BCD2NUM(TIME_YEAR);
}