#define DS_A_REGISTER 10 #define DS_B_REGISTER 11 #define DS_C_REGISTER 12 #define DS_D_REGISTER 13 #define IN_RAM_PARA_TEMP 0XE5 sbit DSDS =P3^4; sbit DSRW =P3^5; sbit DSAS =P3^6; sbit DSCS =P3^7; unsigned char hoursetup, minutesetup, secondsetup, monthsetup, datesetup, yearsetup, minutesetup1, hoursetup1, datesetup1; unsigned char read_ds12887_char(unsigned char address) { unsigned char dsdata; DSDS=1; DSRW=1; DSAS=1; DSCS=0; P2=address; DSAS=0; DSDS=0; P2=0xff; delay(10); dsdata=P2; DSDS=1; DSCS=1; DSAS=1; return (dsdata); } /********************************************************************* * 函数原型:write_ds12887_char(unsigned char adress,unsigned char temp) * * 功能: 在ds12887指定地址写一个char的数据 * *********************************************************************/ /**************************************************************/ void write_ds12887_char(unsigned char address,unsigned char dsdata) { DSCS=0; DSDS=1; DSAS=1; DSRW=1; P2=address; DSAS=0; DSRW=0; P2=dsdata; DSAS=1; DSRW=1; DSCS=1; } void time_set1(unsigned char adress,unsigned char time_data) { write_ds12887_char(DS_A_REGISTER,0x70); write_ds12887_char(DS_B_REGISTER,0xA2); write_ds12887_char(adress,time_data); write_ds12887_char(DS_B_REGISTER,0x26); write_ds12887_char(DS_A_REGISTER,0x20); } void time_init()//初始化,设定时间 { time_set1(0x09,yearsetup); //年 time_set1(0x08,monthsetup); //月 time_set1(0x07,datesetup); //日 time_set1(0x04,hoursetup); time_set1(0x02,minutesetup); time_set1(0x00,secondsetup); } void time_iv()//读取时间 { yearsetup=read_ds12887_char(0x09); monthsetup=read_ds12887_char(0x08); datesetup=read_ds12887_char(0x07); hoursetup=read_ds12887_char(0x04); minutesetup=read_ds12887_char(0x02); secondsetup=read_ds12887_char(0x00); }