找回密码
 立即注册
查看: 1461|回复: 1

I2C, 主机,从机,演示程序

[复制链接]

该用户从未签到

551

主题

9297

回帖

1万

积分

管理员

积分
14043
发表于 2023-3-28 10:37:25 | 显示全部楼层 |阅读模式
I2C, 主机,从机,演示程序
I2C, 主机,从机,演示程序-1.png
回复 送花

使用道具 举报

该用户从未签到

0

主题

1

回帖

18

积分

新手上路

积分
18
发表于 2023-8-18 14:55:00 | 显示全部楼层
1.2 移位操作提高代码的可读性。


移位操作在单片机开发中非常重要,下面是delay_init函数的一行代码:


这个操作就是将CTRL寄存器的第1位(从0开始算起)设置为1,为什么要通过左移而不是直接设置一个固定的值呢?

其实这是为了提高代码的可读性以及可重用性。这行代码可以很直观明了的知道,是将第1位设置为1。如果写成:


这个虽然也能实现同样的效果,但是可读性稍差,而且修改也比较麻烦。

1.3 ~按位取反操作使用技巧

按位取反在设置寄存器的时候经常被使用,常用于清除某一个/某几个位。下面是delay_us函数的一行代码:


该代码可以解读为 仅设置CTRL寄存器的第0位(最低位)为0,其他位的值保持不变。

同样我们也不使用按位取反,将代码写成:


可见前者的可读性,及可维护性都要比后者好很多。

1.4 ^按位异或操作使用技巧

该功能非常适合用于控制某个位翻转,常见的应用场景就是控制LED闪烁,如:


执行一次该代码,就会使PB5的输出状态翻转一次,如果我们的LED接在PB5上,就可以看到LED闪烁了。
回复 支持 反对 送花

使用道具 举报

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-3 02:32 , Processed in 0.054597 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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