如下是 DS1302的 读时钟或ram的 子代码。scl为clock。 sda为data(I/0)。 en为RST信号。
uchar read(uchar a2)
{
uchar j,d2=0x00;
en=0;
scl=0;
en=1;
for(j=0;j<8;j++) //发送地址
{
scl=0;
sda=(a2 & 0x01);
a2=a2>>1;
}
for(j=0;j<8;j++) //读数据
{
if(sda==1) //在这句执行前SCL还是高电平。
{d2=d2|0x80;} //读取数据不是应该是下降沿读取么?但现在高电平直接读取了?
else //读完再产生下降沿? 这样写才能用。
如果先把scl=0 再去判断sda 就不能用。这是为什么?
scl=0;
d2=d2>>1;
scl=1;
}
en=0;
//以下为DS1302复位的稳定时间 没有看到什么资料上有什么DS1302什么复位稳定时间这段代码的啊,但少了这段还不能工作。这段代码是干嘛的?有什么资料上写么?
scl=0;
scl=1;
sda=0;
return d2;
}
您开发板照片:(你可以用qq截屏,粘贴到这里)