⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.c

📁 基于51单片机的时钟芯片DS1302的驱动程序。。。希望对大家有用
💻 C
字号:
#include "DS1302.h"
#include <reg52.h>
#define uchar unsigned char
#define uchar unsigned char
/* -----------------------------------------------------------------------
*/
void rt_reset()//复位DS1302
{
DSCK = 0;
DSRST = 0;
DSRST = 1;
}
/* --------------------------------------------------------------------- */
void rt_wbyte(uchar W_Byte)//写一个字节的内容到ds1302 中
{
uchar i;
for(i = 0; i < 8; ++i)
{
DSIO = 0;
if(W_Byte & 0x01)
{
DSIO = 1; /* set port pin high to read data */
}
DSCK = 0;
DSCK = 1;
W_Byte >>= 1;
}
}
/* -----------------------------------------------------------------------
*/
uchar rt_rbyte()//从ds1302 中读一个字节的信息
{
uchar i;
uchar R_Byte;
R_Byte = 0x00;
DSIO = 1;
for(i=0; i<8; ++i)
{
R_Byte >>= 1;
DSCK = 1;
DSCK = 0;
if(DSIO){
R_Byte |= 0x80;
}
}
return R_Byte;
}
/* ----------------------------------------- */
void GetTime(struct time *p)//读DS1302 内部的时间信息,存在结构指针*p 中
{
rt_reset();
rt_wbyte(0xbf); /* clock burst read (eight registers) */
p->sec = rt_rbyte();//秒
p->minute = rt_rbyte();//分
p->hour = rt_rbyte();//时
p->date = rt_rbyte(); //date,星期
p->month = rt_rbyte();//月
p->week = rt_rbyte(); //day,日
p->year = rt_rbyte();//年
rt_rbyte(); /* must read control register in
burst mode */
rt_reset();
DSRST = 0;
}
/* ----------------------------------------- */
void SetTime(struct time *p)//将结构指针p 中的时间写入DS1302,更新其内部的时间
{
rt_reset();
rt_wbyte(0x8e); /* control register */
rt_wbyte(0); /* disable write protect */
rt_reset();
rt_wbyte(0x90); /* trickle charger register */
rt_wbyte(0xab); /* enable, 2 dDSIOdes, 8K resistor */
rt_reset();
rt_wbyte(0xbe); /* clock burst write (eight registers) */
rt_wbyte(p->sec);
rt_wbyte(p->minute);
rt_wbyte(p->hour);
rt_wbyte(p->date); //date
rt_wbyte(p->month);
rt_wbyte(p->week); //day
rt_wbyte(p->year);
rt_wbyte(0x80); /* must write control register in burst mode,enable write protect*/
rt_reset();
DSRST = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -