📄 ds1302_driver.c
字号:
#include "AT89S52.H"
#include "CONFIG.H"
#include "DS1302_Driver.h"
#include <intrins.h>
uchar bdata SHIFT_BUF;
sbit SHIFT_BUF_0=SHIFT_BUF^0;
/*--------------------------
DS1302读写启动程序
--------------------------*/
void DSReset_Start(void)
{
RST=0;
SCLK=0;
RST=1;
}
/*--------------------------
DS1302读写终止程序
--------------------------*/
void Reset_End(void)
{
RST=0;
}
/*----------------------------
DS1302写字节程序
----------------------------*/
void DSByte_Write(uchar byte)
{
uchar data i;
SHIFT_BUF=byte;
for(i=0;i<8;i++)
{
SCLK=0;
I0=SHIFT_BUF_0;
SCLK=1;
SHIFT_BUF=_cror_(SHIFT_BUF,1);
}
}
/*----------------------------
DS1302读字节程序
----------------------------*/
uchar DSByte_Read(void)
{
uchar data i;
I0=1;
for(i=0;i<8;i++)
{
SCLK=0;
SHIFT_BUF_0=I0;
SCLK=1;
SHIFT_BUF=_cror_(SHIFT_BUF,1);
}
return SHIFT_BUF;
}
/*--------------------------------
DS1302初始化程序
--------------------------------*/
void RTC_Init(uchar *rtc)
{
uchar data i;
DSReset_Start();
DSByte_Write(0x8E);//去WP保护
DSByte_Write(0);
Reset_End();
DSReset_Start();
DSByte_Write(90);//禁止充电
DSByte_Write(0);
Reset_End();
DSReset_Start();
DSByte_Write(0xBE);
for(i=0;i<7;i++)
{
DSByte_Write(*rtc++);
}
DSByte_Write(0x80);
Reset_End();
}
/*--------------------------------
DS1302读取RT程序
--------------------------------*/
void RTC_Read(uchar *rtc)
{
uchar data i;
DSReset_Start();
DSByte_Write(0xBF);
for(i=0;i<7;i++)
{
*rtc++=DSByte_Read();
}
Reset_End();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -