📄 ds1302.c
字号:
//========================================================================================
// 程序功能: 取出DS1302时间地址所对应的时间
// 程序接口: void DS1302_GetTime();
// 编写时间: 2009-03-02
//========================================================================================
#include<Module.h>
sbit CLK=P3^4;
sbit IO=P3^5; //ds1302
sbit RST=P3^6;
uc G_ucTime[7]; //秒,分,时,星期,日,月,年 注意为BCD码
//========================================================================================
// 函数功能: 读取DS1302某地址的数据
// 函数接口: uc DS1302_ReadByte(uc ucAddr);
// 入口参数: ucAddr: DS1302地址
// 出口参数: k
//========================================================================================
uc DS1302_ReadByte(uc ucAddr)
{
uc i,k;
RST = 0;
CLK = 0; //clk为低电平时才能将rst置高
RST=1; //启动数据传送
ucAddr |= 0x01;
k=1;
for(i=0;i<8;i++)
{
CLK = 0;
if( ucAddr&k )
IO = 1;
else
IO = 0;
CLK = 1;
k<<=1;
}//for
k=0;
IO = 1;
CLK = 1;
for(i=0;i<8;i++)
{
k >>= 1;
CLK = 0;
if( IO )
k|= 0x80;
CLK = 1;
}//for
CLK = 1;
RST =0;
return k;
}
//========================================================================================
// 函数功能: 读取DS1302当前时间
// 函数接口: void DS1302_GetTime();
// 入口参数: DS1302_ReadByte(ucAddr): 保存当前时间地址。
// 出口参数: unsigned char G_ucTime[i] ;
//========================================================================================
void DS1302_GetTime()
{
uc i, ucAddr = 0x81;
for(i=0;i<7;i++)
{
G_ucTime[i] = DS1302_ReadByte(ucAddr); //格式为: 秒 分 时 日 月 星期 年
ucAddr += 2;
}//for
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -