3084|0

1379

帖子

0

TA的资源

裸片初长成(中级)

楼主
 

[单片机]DS1302读写程序 [复制链接]

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar sec,min,hr;
sbit clk=P1^0;
sbit dat=P1^1;
sbit rst=P1^2;
sbit A0=ACC^0;
sbit A1=ACC^1;
sbit A2=ACC^2;     
sbit A3=ACC^3;
sbit A4=ACC^4;
sbit A5=ACC^5;
sbit A6=ACC^6;
sbit A7=ACC^7;
sbit blue=P1^5;
sbit green=P1^6;
sbit red=P1^7;
void InputByte(uchar dd)//mcu to ds1302
   {
     uchar i;
     ACC=dd;
     for(i=8;i>0;i--)
      {
       dat=A0;
       clk=1;
       clk=0;
       ACC=ACC>>=1;
        }
     } 
//-------------------------------------------------------
uchar OutputByte(void) //ds1302 to mcu
   {
     uchar i;
     dat=1;     
     for(i=8;i>0;i--)
      {
        ACC=ACC>>1;
        A7=dat;
        clk=1;
        clk=0;
        }     
      return(ACC);
     }
//--------------------------------------------------
void Write(uchar addr,uchar num)
  {
    rst=0;
    clk=0;
    rst=1;
    InputByte(addr);   // address
    InputByte(num);    //data
    clk=1;
    rst=0;
    }
//-------------------------------------------------
uchar Read(uchar addr)
  {
    uchar dd=0;
    rst=0;
    clk=0;
    rst=1;
    InputByte(addr);
    dd=OutputByte();
    clk=1;
    rst=0;
    return(dd);
   }
//--------------------------------------------------------------
uchar ReadSec()
  {
   uchar dd;
   dd=Read(0x81);
   return(dd);
   }
//--------------------------------------------------------------
uchar ReadMin()
  {
   uchar dd;
   dd=Read(0x83);
   return(dd);
    }      
//--------------------------------------------------------------
uchar ReadHr()
  {
    uchar dd;
    dd=Read(0x85);
    return(dd);
   }
//------------------------------------------------------------  
uchar ReadWe()
  {
    uchar dd;
    dd=Read(0x8b);
    return(dd);
    }
//------------------------------------------------------------
uchar ReadDay()
  {
    uchar dd;
    dd=Read(0x87);
    return(dd);
   }
//------------------------------------------------------------
uchar ReadMn()
  {
    uchar dd;
    dd=Read(0x89);
    return(dd);
   }
//------------------------------------------------------------
uchar ReadYs()
  {
    uchar dd;
    dd=Read(0x8d);
    return(dd);
   }
//------------------------------------------------------------
void WriteSec(uchar num)
      {
       Write(0x80,num);
       }
//-----------------------------------------------------------
void WriteMin(uchar num)
  {
    Write(0x82,num);
   }
//-----------------------------------------------------------
void WriteHr(uchar num)
  {
    Write(0x84,num);
   }
//-----------------------------------------------------------
void WriteDay(uchar num)
 {
   Write(0x86,num);
  }
//-----------------------------------------------------------
void WriteMn(uchar num)
  {
    Write(0x88,num);
   }
//-----------------------------------------------------------
void WriteWe(uchar num)
 {
   Write(0x8a,num);
   }
//-----------------------------------------------------------
void WriteYs(uchar num)
  {
    Write(0x8c,num);
   }
//-----------------------------------------------------------
void DisableWP(void)        //write data,read 0
 {
   Write(0x8e,0x00);
   }
//----------------------------------------------------------
void EnableWP(void)              //can'd write,read data  
 {
   Write(0x85,0x80);
   }
   void delay()
   {uint i,j;
   for(i=0;i<1000;i++)   
     {
     for(j=0;j<40;j++){}
     }
   }
  
   void main(void)
   {
         
DisableWP();
 WriteSec(0x00);
  WriteMin(0x57);
 WriteHr(0x10);
WriteDay(0x07);
WriteMn(0x06);
  WriteWe(0x02);
 WriteYs(0x05);
       }
此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表