51单片机DS1302时钟驱动

 51单片机DS1302时钟驱动程序

/*************************************************************************************
**************
**************************************************************************************/


#ifndef           __DS1302_H__
#define           __DS1302_H__


#include "DS1302.h"
#define uchar unsigned char
#define uint  unsigned int

sbit SCLK = P1^2;
sbit IO   = P1^1;
sbit RST  = P1^0;

uchar year,month,day,hour,minute,second,week;

void delay()
{;;}

void DS1302_write_byte(uchar date)
{
	uchar i;
	SCLK = 0;
	delay();
	for(i=0;i<8;i++)
	{
		SCLK = 0;
		delay();
		IO = date & 0x01;
		SCLK = 1;
		delay();
		date >>= 1;
	}
}
//
void DS1302_write(uchar addr,uchar date)
{
	uchar num;
	RST = 0;
	delay();
	SCLK = 0;
	delay();
	RST = 1;
	delay();
	DS1302_write_byte(addr);
	num = (date/10<<4)|(date%10);
	DS1302_write_byte(num);
	RST = 0;
	delay();
	SCLK = 1;
}
//
uchar DS1302_read_byte()
{
	uchar i;
	uchar dat = 0x00;
	for(i=0;i<8;i++)
	{
		SCLK = 0;
		dat >>= 1;
		if(IO)
		{
			dat |= 0X80;
		}
		
		SCLK = 1;
		delay();
		SCLK = 0;
	}
	return dat;
}
//
uchar DS1302_read(uchar addr)
{
	uchar dat;
	uchar dat1,dat2;

	RST = 0;
	delay();
	SCLK = 0;
	delay();
	RST = 1;
	delay();
	DS1302_write_byte(addr);
	dat = DS1302_read_byte();
  RST = 0;
	SCLK = 1;
	delay();
	
	dat1 = dat/16;
	dat2 = dat%16;
	dat = dat1*10+dat2;
	
	return dat;
}
//
void DS1302_write_time()    //żÊý
{
	DS1302_write(0x8e,0x00);
	
	DS1302_write(0x8c,19);  //Äê
	DS1302_write(0x88,01);  //ÔÂ
	DS1302_write(0x86,25);  //ÈÕ
	DS1302_write(0x8a,05);  //ÐÇÆÚ
	DS1302_write(0x84,14);  //ʱ
	DS1302_write(0x82,50);  //·Ö
	DS1302_write(0x80,00);  //Ãë
	
	DS1302_write(0x8e,0x80);
}
//
void DS1302_read_time()     //ÆæÊý
{
	DS1302_write(0x8e,0x00);
	
	year   = DS1302_read(0x8d);  //Äê
	month  = DS1302_read(0x89);  //ÔÂ
	day    = DS1302_read(0x87);  //ÈÕ
	week   = DS1302_read(0x8b);  //ÐÇÆÚ
	hour   = DS1302_read(0x85);  //ʱ
	minute = DS1302_read(0x83);  //·Ö
	second = DS1302_read(0x81);  //Ãë
	
	DS1302_write(0x8e,0x80);
}



#endif

猜你喜欢

转载自blog.csdn.net/qq_43588817/article/details/87459080