Chinaunix首页 | 论坛 | 博客
  • 博客访问: 962696
  • 博文数量: 175
  • 博客积分: 2788
  • 博客等级: 少校
  • 技术积分: 2060
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 12:25
个人简介

知之者不如好之,好之者不如乐之

文章分类

全部博文(175)

文章存档

2016年(1)

2015年(20)

2014年(8)

2013年(68)

2012年(16)

2011年(35)

2010年(1)

2008年(26)

分类: 嵌入式

2013-11-19 21:20:46

ds1302读写程序

blliao 发表于 2006-1-4 22:13:24 侃单片机

sbit  DS13CS   =P3^5;  /*DS1302的RST脚片选*/
sbit  DS13IO   =P3^4;  /*DS1302的IO脚数据*/
sbit  DS13CLK  =P3^3;  /*DS1302的SCLK脚脉冲*/
/*向DS1302写一个字节*/
void _wds13byte(uchar _code)
{
uchar i;
DS13CLK =0;
DS13CLK =0;
for(i=0;i<8;i++)
{
  if(_code&0x01) DS13IO =1;
  else DS13IO =0;
  DS13CLK =1;
  DS13CLK =1;
  DS13CLK =0;
  DS13CLK =0;
  _code =_code >> 1;
}
}
/*从DS1302读一个字节*/
uchar _rds13byte(void)
{
uchar i,_code;
_code=0;
DS13CLK =0;
DS13CLK =0;
DS13IO  =1;
for(i=0;i<8;i++)
{
  _code =_code >>1;
  if(DS13IO) _code =_code|0x80;
  DS13CLK =1;
  DS13CLK =1;
  DS13CLK =0;
  DS13CLK =0;
}
return _code;
}
/*读功能 _code读功能命令   */
uchar readds1302(uchar _code)
{
DS13CS  =0;         /*关闭DS1302*/
DS13CLK =0;
DS13CLK =0;
DS13CS  =1;          /*使能DS1302*/
_wds13byte(_code);   /*读代码*/
_code=_rds13byte();  /*返回读取数字*/
DS13CLK =1;
DS13CS  =0;         /*关闭DS1302*/
return _code;
}
/*写功能 fp写的地址,_code写的内容*/
void writeds1302(uchar fp,uchar _code)
{
DS13CS  =0;         /*关闭DS1302*/
DS13CLK =0;
DS13CLK =0;
DS13CS  =1;          /*使能DS1302*/
_wds13byte(fp);     /*写控制命令*/
_wds13byte(_code);  /*写入数据*/
DS13CLK=1;
DS13CS =0;          /*关闭DS1302*/
}
/*******DS1302设置快速充电***************/
void ds13_charg(void)
{
  writeds1302(0x8e,0x00);  /*解除写保护*/
  writeds1302(0x90,0xa5);  /*单二极管2K电阻充电*/
  writeds1302(0x8e,0x10);  /*置位写保护*/
}

原文:


阅读(930) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~