51单片机DS1302时钟驱动程序,仅有.h文件,无.c文件
/*************************************************************************************
**************
**************************************************************************************/
#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
个人见解,感谢阅读。