这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 51单片机时钟DS1302读数据写数据时序疑问求解

共12条 1/2 1 2 跳转至

51单片机时钟DS1302读数据写数据时序疑问求解

菜鸟
2013-11-28 10:39:25     打赏

我的那个开发板上向DS1302写一字节数据是这样的:
void input(unsigned char byte)//write one byte data to ds1302
{
   unsigned char i;
   for(i=8;i>0;i--)
  {
    IO=byte&0x01;
    CLK=1;
    CLK=0;
    byte>>=1;
   }
}
但是芯片手册不是说写数据是在上升沿吗,这里 CLK先拉高再拉低,不是下降沿写数据吗??这是什么原因??还有这里CLK=1;
                     CLK=0;
                     byte>>=1;

可以改成        byte>>=1;    
                    CLK=1;
                    CLK=0;
数码管显示是正常的,那么再看为什么读数据时为什么不能这样?读一字节数据是这样的:

unsigned char output(void)
{
     unsigned char i,dat=0;
      for(i=8;i>0;i--)
     { 
        dat>>=1;
        if(IO)     dat|=0x80; 
        CLK=1;
        CLK=0;  
  }
  return (dat);

}

这里我也想换时钟的顺序,即改成

CLK=1;

dat>>=1;

if(IO)     dat|=0x80;

CLK=0;

 

dat>>=1;

CLK=1;

if(IO)     dat|=0x80;

CLK=0;

 

dat>>=1;

CLK=1;

CLK=0;

if(IO)    dat|=0x80;

CLK=1;

CLK=0;

dat>>=1; 

if(IO)    dat|=0x80;

 

这几种形式,数码管结果显示是不正确的,为什么写数据的时候可以调换时钟和移位操作的顺序而读数据的时候不行呢??


专家
2013-11-28 11:37:14     打赏
2楼

 for(i=8;i>0;i--)
  {
    IO=byte&0x01;
    CLK=1;
    CLK=0;
    byte>>=1;
   }

回答你这个问题,数据手册是没有错的,这样的代码也是上升沿写数据的,因为这是一个循环体,你可以把它想象成先拉低,然后下一个循环时,数据放上去,在拉高,这样就是在上升沿了。但是还是要按照数据手册的标准时序去写,否则会出现乱码的问题。


高工
2013-11-28 12:10:41     打赏
3楼

在循环之前 CLK=0; 所以循环里面CLK=1; CLK=0;没有问题,当然写成CLK=0; CLK=1; 也是可以的。

读数据是在时钟下降沿变化,CLK=1; CLK=0; 关键看读的时候是否数据出来,一个不小心容易出现错位


高工
2013-11-28 12:33:25     打赏
4楼

其实楼主你可以不必纠结于开发板例程,操作一款传感器,写出来的代码多种多样,既然例程和你理解的不同,你可以在例程的基础上按照你自己的思想去修改。给一份我写的读写数据的函数给你看看:

 


专家
2013-11-28 12:39:01     打赏
5楼

对你这种探索谨慎表示尊重,但是,建议你分析下数据手册:按照数据手册上说的,1302首先放数据,在使能,接着在时钟的作用下进行地址或者数据的传送。

另外:你clk为1或者0,是为了设置硬件,在循环里可以实现1 0的转换,但是,你可能丢失第一个数据。因为为1的时候,可能读的是第二个数据。


院士
2013-11-28 13:28:31     打赏
6楼
你的图片看起来的确很有个性

高工
2013-11-28 20:37:19     打赏
7楼
为什么我自己这边显示的还是原来的头像~

高工
2013-11-28 20:44:00     打赏
8楼
退出后重新登录好了

菜鸟
2013-11-29 14:21:44     打赏
9楼

谢谢回复。但问题就出在这里,我把它改成

for(i=8;i>0;i--)
{
IO=byte&0x01;
CLK=0;

CLK=1;
byte>>=1;
}      //即先低后高,制造上升沿

反而会出现乱码不正确的现象,所以我才疑惑


高工
2013-11-29 14:38:25     打赏
10楼
头像很骚包啊。

共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]