微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 各位前辈帮我看下DS1302的读写功能程序是不是错了?

各位前辈帮我看下DS1302的读写功能程序是不是错了?

时间:10-02 整理:3721RD 点击:
/***DS1302WRITEBYTE写一个字节***/
void write_byte(uchar dat)
{
  uchar i;
  for(i=1;i<8;i++)
  {  
     SCK=0;
     SDA=dat&0x01;//提取待写入的D0位
  dat=dat>>1;//右移移位,高位补0为提取下一位数据准备
     SCK=1;//拉高时钟信号,D0位数据写入
  }
}
/***DS1302WRITEDATA写数据***/
void write_data(uchar addr,dat)
{
   RST=0;//禁止数据传输
   delayus(1);
   SCK=0;//拉低时钟信号,为写操作准备上升沿
   delayus(1);
   RST=1;//读写操作时RST必须置高
   delayus(1);
   write_byte(addr);//先写地址
   delayus(1);
   write_byte(dat);
   RST=0;//禁止数据传输
   SCK=1; //释放总线
   SDA=1;
}
/***DS1302READDATA读数据***/
uchar read_data(uchar addr)
{
   uchar dat1,dat2,i;
   RST=0;
   delayus(1);
   SCK=0;
   delayus(1);
   RST=1;
   delayus(1);
   write_byte(addr);
   for(i=0;i<8;i++)
   {
       dat1=dat1>>1;
       if(SDA)
       dat1=dat1|0x80;
    SCK=0;  
    SCK=1;
  
   }
   RST=0;
   SCK=1;
   SDA=1;

   dat2=dat1/16;//BCD转16
   dat2=dat2*10+dat1;
return(dat2) ;
}  

老师们帮忙看一下    http://wenku.baidu.com/link?url= ... xcFFu-yiE5B202oTFRa    这个是DS1302的数据手册   

我自己调了很久了 不知道那里出问题了 就是实现不了功能

有时间 的老师帮忙看下 指点我一下 谢谢

1302有成熟经典的例程,对比查找下就搞惦了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top