📄 ds1302.h
字号:
/***************************************************************************
* DS1302时钟芯片驱动函数库
* Author:Xieqin
* CopyRight:2004/06/22
***********************************************************************/
sbit T_CLK = P1^2; //时钟脉冲口
sbit T_IO = P1^1; //数据口
sbit T_RST = P1^0; //复位口
void WriteByte(unsigned char dat)//写字节函数
{ //dat=待写入地址
unsigned char i;
unsigned char x=0x01;
for(i=0; i<8; i++)
{
T_CLK = 0; //准备构造上跳沿
if((dat & x)==0)
T_IO=0;
else
T_IO=1;
T_CLK = 1; //构造上跳沿,读入数据
x=x<<1;
}
}
unsigned char ReadByte(void)//读字节函数
{
unsigned char i,x=0x01;
unsigned char dat=0x00;
for(i=0; i<8; i++)
{
T_CLK = 1;
T_CLK = 0;
if(T_IO==1)
dat|=x;
x<<=1;
}
return dat;
}
void Write1302(unsigned char address, unsigned char dat)//向DS1302写字节函数
{ //address=DS1302内部寄存器或RAM地址,dat=待写入数据
T_RST = 0;
T_CLK = 0;
T_RST = 1;
WriteByte(address); /* 地址,命令 */
WriteByte(dat); /* 写1Byte数据*/
T_CLK =0;
T_RST =0;
}
unsigned char Read1302(unsigned char address)//从DS1302读字节函数
{ //address=DS1302内部寄存器或RAM地址
unsigned char dat;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
WriteByte(address); /* 地址,命令 */
dat = ReadByte(); /* 读1Byte数据 */
T_CLK = 0;
T_RST =0;
return dat;
}
void SetTimer(unsigned char *Timer)
{ //*Timer=时间存放单元地址
unsigned char i;
unsigned char address = 0x80;
Write1302(0x8e,0x00); /* 控制命令,WP=0,写操作*/
for(i =0;i<7;i++)
{
Write1302(address,*Timer++); /* 秒 分 时 日 月 星期 年 */
address +=2;
}
Write1302(0x8e,0x80);
}
void GetTimer(unsigned char *Timer)//从DS1302读取时间函数
{ //*Timer=时间存放单元地址
unsigned char i;
unsigned char address = 0x81;
for (i=0;i<7;i++)
{
*Timer++ = Read1302(address);/*格式为: 秒 分 时 日 月 星期 年 */
address += 2;
}
}
void WriteRAM(unsigned char address,unsigned char *dat,unsigned char n)//写RAM函数
{
unsigned char i;
unsigned char addr=0xc0|(address<<1);
for(i=0;i<n;i++)
{
Write1302(addr,*dat++);
addr+=2;
}
}
void ReadRAM(unsigned char address,unsigned char *dat,unsigned char n)//读RAM函数
{
unsigned char i;
unsigned char addr=0xc1|(address<<1);
for(i=0;i<n;i++)
{
*dat++=Read1302(addr);
addr+=2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -