#include <reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit IO=P3^4;
sbit CE=P3^5;
sbit CL=P3^6;
uchar
timedata[7];
void WriteByte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
CL=0;
IO=dat&0x01;
_nop_();
CL=1;
dat>>=1;
}
}
void SingleWrite(uchar addr,uchar dat)
{
CE=1;
WriteByte((addr<<1)|0x80);
_nop_();
WriteByte(dat);
CE=0;
CL=0;
}
uchar ReadByte()
{
uchar i,dat=0;
CE=1;
for(i=0;i<8;i++)
{
dat>>=1;
if(IO==1)
dat|=0x80;
_nop_();
CL=1;
_nop_();
CL=0;
_nop_();
}
CE=0;
return dat;
}
uchar SingleRead(uchar addr)
{
uchar dat;
CE=1;
WriteByte((addr<<1)|0x81);
_nop_();
dat=ReadByte();
CE=0;
return dat;
}
void InitTime()
{
uchar code time[]={0x50,0x59,0x12,0x27,
0x12,0x03,0x17};
uchar i;
SingleWrite(7,0x00);
for(i=0;i<7;i++)
{
SingleWrite(i,time
);
}
SingleWrite(7,0x80);
}
void ReadTime()
{
uchar i;
CE=1;
for(i=0;i<7;i++)
timedata=SingleRead(i);
CE=0;
}
void Ds1302Init()
{
uchar temp;
CE=1;
temp=SingleRead(0);
if(temp&0x80)
InitTime();
CE=0;
}
请大家帮忙看看我的代码读取数据有问题吗?为什么显示的不正确,找了好几天也没找到哪里的问题!
谢谢了
一周热门 更多>