最近写着玩的!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit clk=P2^6; //1302的时钟引脚
sbit io=P2^5; //1302的数据I/O口
sbit rst=P2^7; //1302的复位引脚读写使能端
sbit cs=P1^7; //595使能端
//uchar tab[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F};//共阴数码管
uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管
uchar miao,fen,shi,m1,m2,f1,f2,s1,s2;
void delay(uchar t)
{while(t--);}
/////////////////////////////////1302
wr1302(uchar dat); void wrd(uchar add,uchar dat);
rddt(uchar add); uchar rd1302(); void init1302();
void ds1302(); void disp();
/////////////////////////////////////
/*********************************************/
/****************** 主函数 *******************/
main()
{ init1302();
while(1)
{ ds1302();
disp();
delay(50);
}
}
/**************** 1302写数据 *****************/
wr1302(uchar dat)
{ uchar i;
rst=1;
for(i=0;i<8;i++)
{ dat>>=1;
io=CY;
clk=0;clk=1;
}
clk=0;
return dat;
}
/**************** 1302读数据 *****************/
uchar rd1302()
{ uchar i,dat;
for(i=0;i<8;i++)
{ dat>>=1;
if(io)
dat|=0x80;
clk=1;clk=0;
}
clk=0;
return dat;
}
/************** 指定地址写一数据 ***************/
void wrd(uchar add,uchar dat) //dat为十进制数
{ rst=clk=0;rst=1;
wr1302(add); //写地址
wr1302(dat);
clk=0;rst=0;
}
/************* 指定地址读出一数据 **************/
rddt(uchar add)
{ uchar dat;
rst=clk=0;rst=1;
wr1302(add);
dat=rd1302(); //读取的数据为16进制
return dat;
}
/*************** DS1302初始化 ****************/
/************** 设置初始化时间 ***************/
void init1302()
{ wrd(0x8e,0x00); //允许向DS1302写入数据
wrd(0x80,0x00);
wrd(0x82,0x00);
wrd(0x84,0x00);
wrd(0x8e,0x80); //禁止写入
}
…………
要详细的等会儿自己下载!