📄 mudle1302.c
字号:
#include "ds1302.h"
void Delayus(uchar i)
{
while(--i);
}
uchar ReadSec(void)
{
return ReadRTC_Byte(0x81);
}
uchar ReadMin(void)
{
return ReadRTC_Byte(0x83);
}
uchar ReadHour(void)
{
return ReadRTC_Byte(0x85);
}
void WriteSec(uchar number)
{
WriteRTC_Byte(0x80,number);
}
void WriteMin(uchar number)
{
WriteRTC_Byte(0x82,number);
}
void WriteHour(uchar number) //向DS1302中写入分字节
{
WriteRTC_Byte(0x84,number);
}
uint ReadRTC_Byte(uchar address)
{
unsigned char redata;
Clr_ds1302_rst;//ds1302_rst = 0;
Clr_ds1302_clk;//ds1302_clk = 0;
Set_ds1302_rst;//ds1302_rst = 1;
Write_bit(address);
redata=Read_bit();
Clr_ds1302_rst;//ds1302_rst = 0;
Set_ds1302_clk;//ds1302_clk = 1;
return redata;
}
void WriteRTC_Byte(uchar address,uchar number)
{
Clr_ds1302_clk;//ds1302_clk = 0;
Clr_ds1302_rst;// ds1302_rst = 0;
Set_ds1302_rst;//ds1302_rst = 1;
Write_bit(address);
Write_bit(number);
Clr_ds1302_rst;//ds1302_rst = 0;
Set_ds1302_clk;//ds1302_clk = 1;
}
void Write_bit (uchar addr)
{
uchar i=0;
for(i=8;i>0;i--){
if((addr&0x01)==0x01)
Set_ds1302_data;//ds1302_dat = 1;
else
Clr_ds1302_data;//ds1302_dat = 0;
Set_ds1302_clk;//ds1302_clk=1;
Clr_ds1302_clk;//ds1302_clk=0;
addr>>=1;
}
}
uchar Read_bit ()
{
uchar i=0,num;
uchar data_r=0;
Delayus(15);//19us delay
data_in;
for(i=8;i>0;i--){
data_r>>=1;
if(data_in_read)
{
data_r|=0x80;
}
Set_ds1302_clk;//ds1302_clk = 1;
Clr_ds1302_clk;//ds1302_clk = 0;
}
return data_r;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -