📄 ds1302.h
字号:
////////////////////////////////////////////////////////////////////////////////////////////
// H.C.H
// DS1302驱动程序(DS1302.h)
// NNU通信工程
//
// 函数说明:
// void set_time() ; 设置实时时钟(DS1302)的时间
// void read_time(); 读时间
// 全局变量: year,week,month,day,hour,minute,second(以BCD码表示)
////////////////////////////////////////////////////////////////////////////////////////////
#include<reg51.h>
#define uchar unsigned char
sbit sclk=P1^0;
sbit sdata=P1^1;
sbit reset=P1^2;
uchar year,week,month,day,hour,minute,second;
void delay(uchar d) //延时程序
{
while(--d);
}
void send_char(uchar sendchar)
{
uchar i;
for(i=0;i<8;i++)
{
sclk=0;
if(sendchar&1) sdata=1;
else sdata=0;
sclk=1;
sendchar=sendchar>>1;
}
}
uchar get_char()
{
uchar i,temp=1,din=0;
for(i=0;i<8;i++)
{
sclk=0;
sdata=1;
if(sdata==1) din=din|temp;
sclk=1;
temp=temp<<1;
}
return(din);
}
void set_off() //寄存器数据能写入WP=0
{
reset=1;
send_char(0x8e);
send_char(0);
sclk=0;
reset=0;
}
void set_on() //寄存器数据不能写入WP=1
{
reset=1;
send_char(0x8e);
send_char(0x80);
sclk=0;
reset=0;
}
void read_time()
{
uchar temp;
reset=1;
send_char(0xbf);
second=get_char();
minute=get_char();
hour=get_char();
day=get_char();
month=get_char();
week=get_char();
year=get_char();
temp=get_char();
sclk=0;
reset=0;
}
void set_time()
{
set_off();
reset=1;
send_char(0xbe);
send_char(second);
send_char(minute);
send_char(hour);
send_char(day);
send_char(month);
send_char(week);
send_char(year);
send_char(0);
sclk=0;
reset=0;
set_on();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -