ds1320怎么分析读写时序?

 时间:2026-02-13 07:16:43

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_();
}
  • Visio怎样快速从形状的文本中查找特定内容
  • 如何使用Visio2010创建电气系统图?
  • VISIO如何调整绘图区域大小
  • visio中的字的大小怎么设定
  • word2010公式自动标号
  • 热门搜索
    欧洲旅游景点 成都市旅游景点 新乡旅游景点大全 十一旅游攻略 齐齐哈尔旅游 南平旅游 玉龙雪山旅游 伊春旅游攻略 桂林旅游高等专科学校 怒江旅游