#include

/*************************ds1302与at89s52引脚连接********************/

sbit T_RST=P3^5;

sbit T_CLK=P3^6;                

sbit T_IO=P3^7;                

              

sbit ACC0=ACC^0;

sbit ACC7=ACC^7;

unsigned char seg[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};         //0~~9段码

/******************DS1302:写入操作(上升沿)*********************/

void write_byte(unsigned char da)

{

   unsigned char i;

   ACC=da;

   for(i=8;i>0;i--)

   {

      T_IO=ACC0;

   T_CLK=0;    

      T_CLK=1;

      ACC=ACC>>1;

   }

}

/******************DS1302:读取操作(下降沿)*****************/

unsigned char read_byte(void)

{

   unsigned char i;

   for(i=0;i<8;i++)

   {

      ACC=ACC>>1;

   T_CLK = 1;

   T_CLK = 0;

      ACC7 = T_IO;

   }

   return(ACC);

}

/******************DS1302:写入数据(先送地址,再写数据)***************************/

void write_1302(unsigned char addr,unsigned char da)

{

   T_RST=0;    //停止工作

   T_CLK=0;                                

   T_RST=1;   //重新工作

   write_byte(addr);    //写入地址

  

   write_byte(da);

   T_RST=0;

   T_CLK=1;

}