| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4269 人关注过本帖
标题:发第一个单片机程序DS1302芯片
取消只看楼主 加入收藏
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
结帖率:62.07%
收藏
 问题点数:0 回复次数:1 
发第一个单片机程序DS1302芯片
程序代码:
#include <reg51.h>
sbit ds1302_nf=P1^2;  // p1.2控制CE
sbit ds1302_clk=P3^6; // p3.6控制时序
sbit ds1302_io=P3^7;  // p3.7控制的是IO口

void ds1302_init()    //准备传输数据的初始化,CE拉高,clk拉低
{
  ds1302_nf=1;
  ds1302_clk=0;
 // ds1302_io=0;
}
void ds1302_close()  //关闭数据传输 ,CE拉高,CLK拉低
{
  ds1302_nf=0;
  //ds1302_clk=0;
  //ds1302_io=0;
}
void ds1302_write_byte(unsigned char addr)   //写一个字节
{
   unsigned char i;
    for(i=0;i<8;i++)
    {
      ds1302_io=addr&1;
     ds1302_clk=0;
      addr>>=1;
      ds1302_clk=1;
     }
}
unsigned char ds1302_read_byte()       //读一个字节
{
  unsigned char i,datanum=0;
  for(i=0;i<8;i++){
      datanum>>=1;
      ds1302_clk=1;
        ds1302_clk=0;
        if(ds1302_io==1)
          datanum|=0x80;
    }
    return(datanum);
}

void ds1302_write_data(unsigned char addr,unsigned char datanum)    //数据的写入分两部分,寄存器的选择和读写方式这个是一个字节  后面是一个字节的数据
{
   ds1302_init();
   ds1302_write_byte(addr);
    ds1302_write_byte(datanum);
    ds1302_close();
}

unsigned char ds1302_read_data(unsigned char addr)    //数据的读入分两步,第一步写入 寄存器 的选择控制部分数据,第二步读出一个字节的内容      
{
  unsigned  char datanum;
  ds1302_init();
  ds1302_write_byte(addr);
  datanum=ds1302_read_byte();
  ds1302_close();
  return(datanum);
}

void ds1302_wp_set()                    //写保护位的设置
{
  ds1302_init();
  ds1302_write_data(0x8e,0x80);
  ds1302_close();
}
void ds1302_wp_clear()               //清楚保护位
{
  ds1302_init();
  ds1302_write_data(0x8e,0);
  ds1302_close();
}
void delay(unsigned char i)        //延时函数
{
   unsigned char j;
    for(i;i>0;i--)
      for(j=0;j<255;j++);
}
//从DS1302里面读出秒表的数据给P2口  P2口连接的是8个LED灯,看灯的效果
void main()
{      
   ds1302_wp_clear();
    ds1302_write_data(0x80,0);
   ds1302_wp_set();
   while(1){
    delay(1000);
   P2=ds1302_read_data(0x81);
   }
}     


[ 本帖最后由 朱三哥 于 2013-3-2 22:09 编辑 ]
搜索更多相关主题的帖子: void 单片机程序 include 
2013-03-02 21:52
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
芯片解读:
可控制口 3个
CE      数据传输用的  拉高 传送数据,拉低,关闭数据传输
CLK     控制时序的
IO      输入输出段

CE 高时  
CLK  正跳变(0变1的过程) 代表写,一个跳变一个位
CLK  负跳变(1变0的过程 )代表读  一个跳变一个位  
数据的格式     两个字节
第一个字节     包含内容为 第7位恒为1 第6位 内部寄存器和RAM的选择  5-1位 为内部寄存器的选择位  最后一位是读写控制位
第二个字节     是我们要的数据
在内部寄存器中 有一个contorl的寄存器的最高位是WP位    是个写保护位,这个为1只读不写,为0 可以写

写操作    连续写两个字节内容即可
读操作    写入一个字节后读入一个字节

读写数从  IO口  1位 1位的拿

传输的数据 是从低到高 一字节

芯片使用注意 大概就这么几点了

   

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2013-03-02 22:05
快速回复:发第一个单片机程序DS1302芯片
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058209 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved