标题:
1302高精度读写数据,读写时间 函数(不可调节时钟)
[打印本页]
作者:
GONG-XIAKE
时间:
2017-9-28 13:10
标题:
1302高精度读写数据,读写时间 函数(不可调节时钟)
全部资料下载地址:
1302高精度不可调节时钟.zip
(40.5 KB, 下载次数: 8)
2017-9-28 13:08 上传
点击文件名下载附件
完整项目文件
下载积分: 黑币 -5
2017年9月7日
21:07
//DS1302写入数据
void writebety_ds(uchar dat)
{
uchar i;
SCLK=0; //初始时钟线置为 0
delayus(2);
for(i=0;i<8;i++) //开始传输8个字节的数据
{
SDA=dat&0x01; // 取最低位,注意DS1302的数据和地址都是从最低位开始传输的
delayus(2);
SCLK=1; // 时钟线拉高,制造上升沿,SDA的数据被传输
delayus(2);
SCLK=0; // 时钟线拉低,为下一个上升沿做准备
dat>>=1; // 数据右移一位,准备传输下一位数据
}
}
//DS1302读出数据
uchar readbety_ds()
{
uchar i,dat;
delayus(2);
for(i=0;i<8;i++)
{
dat>>=1; // 要返回的数据右移一位
if(SDA==1) // 当数据线为高时,证明该位数据为 1
dat|=0x80; // 要传输数据的当前值置为1
SCLK=1; //拉高时钟线
delayus(2);
SCLK=0; // 制造下降沿
delayus(2);
}
return dat; // 返回读取出的数据
}
//DS1302写入单个时间
void dswrite_data(uchar add,uchar dat)
{
RST=0; // 初始 CE 线置为 0
SCLK=0; // 初始时钟线置为 0
RST=1; // 初始 CE 置为 1 ,传输开始
writebety_ds(add);
writebety_ds(dat); // 写入要修改的时间,日期
SCLK=1; // 时钟线拉高
RST=0; //
}
//DS1302读出单个时间
uchar dsread_data(uchar add)
{
uchar temp_date;
RST=0; // 初始 CE 线置为 0 0 0 0
SCLK=0; // 初始时钟线置为 0 0 0 0
RST=1; // 初始 CE 置为 1 1 1 1 ,传输开始
writebety_ds(add); // 传输命令字,要读取的时间 日历地址
temp_date=readbety_ds(); // 读取要得到的时间/ / / / 日期
SCLK=1; // 时钟线拉高
RST=0; // 读取结束, CE 置为 0 0 0 0 ,结束数据的传输
return temp_date; //返回得到的时间/ / / /
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1