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

📄 ds1302.c

📁 KeilC环境下
💻 C
字号:
#include "reg51.h"
#include "type.h"

void write_byte(uchar byte);
uchar read_byte(void);
void write_1302(uchar addr,uchar da);
uchar read_1302(uchar addr);

sbit d_rst=	P2^2;
sbit d_scl=	P3^6;
sbit d_io = P3^7;

sbit ACC0=ACC^0;
sbit ACC7=ACC^7; 

uchar cur_time[7];

//写字节(上升沿)
void write_byte(uchar byte)
{
	uchar i;
	ACC=byte;
	for(i=8;i>0;i--)
	{	
		d_io=ACC0;
		d_scl=0;
		d_scl=1;
		ACC=ACC>>1;
	}
}

//读字节(下降沿)
uchar read_byte(void)
{
	char i;
	for(i=8;i>0;i--)
	{
		ACC=ACC>>1;
		d_scl=1;
		d_scl=0;
		ACC7=d_io;
	}
	return (ACC);
}

//写数据(先地址,后数据)
void write_1302(uchar addr,uchar da)
{
	d_rst=0;
	d_scl=0;
	d_rst=1;
	write_byte(addr);
	write_byte(da);
	d_rst=0;
	d_scl=1;
}

//读数据
uchar read_1302(uchar addr)
{	
	uchar temp;
	d_rst=0;
	d_scl=0;
	d_rst=1;
	write_byte(addr);
	temp=read_byte();
	d_rst=0;
	d_scl=1;
	
	return (temp);
}

//设置时间初值
void set_time(uchar *pda)
{	
	uchar i;
	uchar add=0x80;
	write_1302(0x8e,0x00);	//将控制寄存器设为0x00,
						 	//最高位WP=0可写
	for(i=7;i>0;i--)		//将7个时间初值写入对应寄存器
	{
		write_1302(add,*pda);
		pda++;
		add+=2;
	}
	
	write_1302(0x8e,0x80);	//写保护,WP=0
}

//读取时间值
void get_time(void)
{
	uchar i;
	uchar add=0x81;
	for(i=0;i<7;i++)
	{
		cur_time[i]=read_1302(add);							 
		add+=2;
		
	}
}






⌨️ 快捷键说明

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