ds1320怎么分析读写时序?

2025-10-05 11:07:07

1、看时序图。上升沿读写。

ds1320怎么分析读写时序?

2、读代码:

uchar Ds1302Read(uchar addr)

 

{

 

 uchar n,dat,dat1;

 

 RST = 0;

 

 _nop_();

 SCLK = 0;//先将SCLK置低电平。

 

 _nop_();

 

 RST = 1;//然后将RST(CE)置高电平。

 

 _nop_();

 for(n=0; n<8; n++)//开始传送八位地址命令

 

 {

 

  DSIO = addr & 0x01;//数据从低位开始传送

 

  addr >>= 1;

 

  SCLK = 1;//数据在上升沿时,DS1302读取数据

 

  _nop_();

 

  SCLK = 0;//DS1302下降沿时,放置数据

 

  _nop_();

 

 }

 

 _nop_();

 

 for(n=0; n<8; n++)//读取8位数据

 

 {

 

  dat1 = DSIO;//从最低位开始接收

 

  dat = (dat>>1) | (dat1<<7);

 

  SCLK = 1;

 

  _nop_();

 

  SCLK = 0;//DS1302下降沿时,放置数据

 

  _nop_();

 

 }

 RST = 0;

 

 _nop_(); //以下为DS1302复位的稳定时间,必须的。

 

 SCLK = 1;

 

 _nop_();

 

 DSIO = 0;

 

 _nop_();

 

 DSIO = 1;

 

 _nop_();

 

 return dat; 

 

}

3、读写时序是一样的。

4、写代码:

void Ds1302Write(uchar addr, uchar dat)

 

{

 

 uchar n;

 

 RST = 0;

 

 _nop_();

 SCLK = 0;//先将SCLK置低电平。

 

 _nop_();

 

 RST = 1; //然后将RST(CE)置高电平。

 

 _nop_();

 for (n=0; n<8; n++)//开始传送八位地址命令

 

 {

 

  DSIO = addr & 0x01;//数据从低位开始传送

 

  addr >>= 1;

 

  SCLK = 1;//数据在上升沿时,DS1302读取数据

 

  _nop_();

 

  SCLK = 0;

 

  _nop_();

 

 }

 

 for (n=0; n<8; n++)//写入8位数据

 

 {

 

  DSIO = dat & 0x01;

 

  dat >>= 1;

 

  SCLK = 1;//数据在上升沿时,DS1302读取数据

 

  _nop_();

 

  SCLK = 0;

 

  _nop_(); 

 

 } 

 

  

 

 RST = 0;//传送数据结束

 

 _nop_();

 

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢