蓝桥杯 DS1302学习笔记

使用蓝桥杯实训指导书为参考,以拿下比赛为目的,方便个人理解记下笔记。个别理解错误欢迎指正。

!!!一定要把官方文件的delay2ms给屏蔽了!!!

在比赛提供的包中包含了DS1302的写入和读取函数,所以我需要掌握使用提供的函数写出写入时钟读取时钟这两个函数。

tips:蓝桥杯实训指导书中的函数名和比赛提供的函数名有区别,重点看入口参数。

tips:这里的的移位符不要用左移乘2,右移除2的口诀。

  • 写时钟

 第一行: char* pucRtc 和 char *pucRtc作用是一样的,但这里不是提供地址,而是提供数组

第二行:定义一个中间变量。

第三行:这里的wp=0:允许写操作需要看寄存器表才能明白。

 我们知道时钟芯片的数据是以BCD码来储存的,那么我推测:一个地址就有2位,数到wp所在的地址7第一位时,正好是14对应着16进制中的E,写入一个0,解除了写保护。

第四行:首先假设我们写入了12,(pucRtc[0]/10)<<4,  pucRtc[0]/10得到1,1再<<4位得到 0001 0000,pucRtc[0]%10,的得到2,0010,加起来就是 0001 0010。

下面的都是重复操作了。

 

  • 读时钟

第一行: char* pucRtc 和 char *pucRtc作用是一样的,但这里不是提供地址,而是提供数组

第二行:定义一个中间变量。

第三行:就是把存储在寄存器中的数据拿出来,读的顺序和写的顺序相反,所以是从0x85读取数据而非0x84。

第四行:首先我们假设存储的数据为12,一般时钟芯片中数据的格式为BCD码,所以12在寄存器中表现为 0001 0010,temp>>4就会得到0000 0001也就是1,1*10就是10;接下来temp&0x0f,0000 0010 就是2,10+2就是12,这样就读取出了数据。

后面的分和秒就是一样的。

!!!一定要把官方文件的delay2ms给屏蔽了!!!不然会显示奇怪的东西。(气死)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值