在 Arduino 编程里,bitRead() 是一个用于操作二进制位的内置函数,作用是读取一个数据(通常是字节、整数等)中“指定位置”的二进制位值(0 或 1) ,核心是帮你便捷地提取、判断单个二进制位的状态。

详细拆解

函数格式:bitRead(val, n)

  • val:要读取的原始数据(可以是字节、整数等,本质是二进制存储的数值 )。
  • n:要读取的位的位置(从 0 开始计数,0 表示最右端的“最低位”,1 对应右侧第二位,以此类推 )。
  • 返回值:该位置上的二进制值(01 )。

举个实际例子(对应你资料里的图)

比如资料里的 bitRead(0b0110000, 2)

  • val = 0b0110000(二进制,对应十进制是 48 ),把它的二进制位展开看是:0 1 1 0 0 0 0(注意:实际是 8 位的话,高位补 0 就是 00110000 ,但写法简化了 )。
  • n = 2:表示读取从右往左数的第 3 位(因为从 0 开始数 )。
  • 对应位的值是 0,所以函数返回 0

结合你的代码场景(数码管)

你代码里用了共阳数码管,这类数码管的点亮逻辑是:给低电平(0)时 LED 点亮,高电平(1)时熄灭。而数组 disNum 里存的是高电平熄灭、低电平点亮的原始编码(比如 0b11111100 表示数码管显示 0 时,哪些段熄灭/点亮 )。

因为要控制数码管点亮,需要拿到“某一段是否该点亮”(即需要低电平),所以用 bitRead() 读取原始编码的某一位后,还要用 ! 取反(把原本的 1/0 翻转,让最终输出符合共阳数码管的点亮逻辑 )。

简单说,bitRead() 就是 Arduino 给你提供的“便捷工具”,让你不用手动去做二进制移位、掩码运算,就能直接拿到某个数的某一位是 0 还是 1 ,在操作硬件(比如数码管、控制引脚电平)时特别常用~

0 条评论

目前还没有评论...