标题:
单片机ds1302时钟的RAM读写程序理解,求各位大神相助
[打印本页]
作者:
123456789hyy
时间:
2021-4-15 17:02
标题:
单片机ds1302时钟的RAM读写程序理解,求各位大神相助
问题一:i = read_ds1302ram(30);//怎么理解???
问题二:if(i != 3)表示的是什么意思,为什么要做这样的判断?
uchar code write_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a}; //写地址
uchar code read_add[] ={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b}; //读地址
uchar code init_ds[] ={0x58,0x29,0x07,0x05,0x10,0x14,0x1};
/*************把数据从ds1302 RAM读出来**0-31*************/
uchar read_ds1302ram(uchar add)
{
add <<= 1; //地址是从第二位开始的
add |= 0x01; //把最高位置1 是读命令
add |= 0xc0; //地址最高两位为 1
return(read_ds1302(add));
}
/*************初始化ds1302时间***************/
void init_ds1302()
{
uchar i;
rst = 0; //第一次读写数据时要把IO口拉低
clk = 0;
io = 0;
i = read_ds1302ram(30);
if(i != 3)
{
i = 3;
write_ds1302ram(30,i); //4050 4100 3080
write_ds1302(0x8e,0x00); //打开写保护
for(i=0;i<7;i++)
write_ds1302(write_add[i],init_ds[i]); //把最高位值0 允许ds1302工作
write_ds1302(0x8e,0x80); //关写保护
}
复制代码
作者:
人人学会单片机
时间:
2021-4-15 17:52
那么一点点容量 没必要浪费单片机的代码
作者:
MV-BP1X
时间:
2021-4-17 10:41
时钟芯片资料里面并没有介绍该地址的作用,我用的时候并没有涉及到这个地址,不影响使用。
作者:
ytech_cn
时间:
2021-4-18 21:24
你仔细看读函数,最后转换成ram地址oxfc,读的这个地址的数据并进行判断的
作者:
ttmax3
时间:
2021-4-19 15:10
就字面上来解答,具体你得根据数据手册来查看
问题一:i = read_ds1302ram(30);//怎么理解???
i= read_ds1302ram(30) 里面的内容
问题二:if(i != 3)表示的是什么意思,为什么要做这样的判断?
如果read_ds1302ram(30) 里面的内容不等于3
这里应该是读取ds1302第30号ram寄存器数据,一般来说这个位上面是秒。具体还是得查数据手册。
作者:
birdzhyli
时间:
2021-5-2 23:47
02.uchar read_ds1302ram(uchar add)
03.{
04. add <<= 1; //地址是从第二位开始的
05. add |= 0x01; //把最高位置1 是读命令
06. add |= 0xc0; //地址最高两位为 1
07. return(read_ds1302(add));
08.}
这个嵌套函数能执行完吗?求教
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1