找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1818|回复: 17
打印 上一主题 下一主题
收起左侧

这个C语言代码怎么理解:DS1302ByteWrite((reg<<1)|0x80)

[复制链接]
楼主
ID:213173 发表于 2023-2-20 15:11 | 显示全部楼层
读出地址:0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d
写入地址:0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c
变量reg如果等于0x00,左移一位还是0x00,0x00|0x80 等于0x80
变量reg如果等于0x01,左移一位是0x02,0x02|0x80 等于0x82
变量reg如果等于0x02,左移一位是0x04,0x04|0x80 等于0x84
......以此类推。
回复

使用道具 举报

沙发
ID:213173 发表于 2023-2-20 17:22 | 显示全部楼层
zhuls 发表于 2023-2-20 15:41
学习了~~那定义写入地址,读时直接地址+1不就OK了?还整这么多弯弯,

这是各人编程习惯的差异,没有好差之分。
回复

使用道具 举报

板凳
ID:213173 发表于 2023-2-20 21:48 | 显示全部楼层
cwb2038 发表于 2023-2-20 15:41
完整代码如下:

你看明白下列语句,前面的问题就解决了
  1.                 DS1302SingleWrite(7, 0x00); //撤销写保护以允许写入数据  【 地址7<<1|0x80等于0x8E 】
  2.                 for (i=0; i<7; i++) //设置 DS1302 为默认的初始时间
  3.                 {
  4.                         DS1302SingleWrite(i, InitTime[i]); //【 地址i<<1|0x80等于0x80,0x82,0x84,0x86,0x88,0x8A,0x8C】
  5.                 }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表