关于ds1302时序的问题。

2020-01-27 11:35发布

ds1302读时序时 是时钟下降沿之后才能读数吗 怎么我看有的人先把clk=1 然后用if()读取 再把clk=0 拉低 我这样写就不行 如下程序1是错误的

uchar read_Byte()
{
  uchar dat=0x00,i;
  for(i=0;i<8;i++)
  {
           dat=dat>>1;
        DS1302_CLK=1;
        if(DS1302_IO)
        dat|=0x80;
        DS1302_CLK=0;
}
   DS1302_RST=0;
   DS1302_CLK=0;
   return(dat);
}

这样写才正确
uchar read_Byte()
{
  uchar dat=0x00,i;
  for(i=0;i<8;i++)
  {
           dat=dat>>1;
        DS1302_CLK=1;
        DS1302_CLK=0;
    if(DS1302_IO)
        dat|=0x80;


   }
   DS1302_RST=0;
   DS1302_CLK=0;
   return(dat);
}

还有写时序图是先拉低clk=0 准备要写的数据 然后 clk=1, 我可不可以这样  (1)准备要写的数据 (2)clk=0  (3)clk=1 ?

时序图到底是怎样看的 怎样一个原理?小生是一个正努力进步的菜鸟 请大神指教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。