Arduino 位操作相关函数

Arduino 位操作相关函数


bit()

bit(n);//计算指定位的值
//返回值: bit类型0或者1
void setup() {
Serial.begin(115200);
Serial.println(bit(0));//相当于2的0次幂
Serial.println(bit(1));//相当于2的1次幂
Serial.println(bit(2));//相当于2的2次幂
Serial.println(bit(3));
Serial.println(bit(5));
Serial.println(bit(8));
Serial.println(bit(9));//相当于2的9次幂
Serial.println("----");
Serial.println(~bit(0));//8位单片机按位取反
Serial.println(~bit(1));
Serial.println(~bit(2));
Serial.println(~bit(3));
Serial.println(~bit(5));
Serial.println(~bit(8));
Serial.println(~bit(9));
}

void loop() {

}

在这里插入图片描述

bitClear():清除数值变量的位。

  • bitClear(x, n)

x: 要清除其位的数值变量。
n: 要清除哪个位,从0开始清除最低有效位(最右)。`
返回值;x

void setup() {
Serial.begin(115200);
 int x = 8;
  int n = 1;
  int y = bitClear(x, 3);
  Serial.print(y); //输出为0
  
}

void loop() {

}

返回值:在这里插入图片描述

bitWrite(): 写入数值变量的位。

  • bitWrite(x, n, b)

x: 要写入的数值变量.
n: 从0开始的最低有效位(最右)要写哪位.
b: 要写入位(0或1)的值。.

void setup() {
  Serial.begin(9600);
  while (!Serial) {}  // wait for serial port to connect. Needed for native USB port only
  byte x = 0b10000000;  // the 0b prefix indicates a binary constant
  Serial.println(x, BIN); // 10000000
  bitWrite(x, 0, 1);  // write 1 to the least significant bit of x
  Serial.println(x, BIN); // 10000001
}

void loop() {}

lowByte():从右往左取低位字节。

highByte():从左往右取高位字节。

bitSet():将对应位置的值设置为1。

void setup() {
  Serial.begin(115200);
  int x = 15;
  int n = 0; 
   bitSet(x, 1);
   Serial.print(x, BIN);
}

void loop() {
}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用ATtiny1614微处理器及其内部数模转换器(DAC)构建的微型函数发生器。 硬件部件 Microchip Technology ATtiny1614× 1个 软件应用程序和在线服务 Arduino IDE 手动工具和制造机 3D打印机(通用) 烙铁(通用) ATtiny1614是新型ATtiny微处理器的一部分。其功能之一是内置的数模转换器或DAC。该项目开始时是一项实验,目的是发现使用内部DAC产生正弦波的局限性。 这个概念很简单,填写一个正弦波各个点的电压电平表,然后通过DAC反复播放它们。考虑为一个完整的波形周期存储256个点。要以1Hz的频率输出此波 形,需要在一秒钟内输出256个点。因此,执行此操作所需的时钟速度为256Hz。在10Hz时,时钟速度需要为2560Hz,在10kHz时,时钟速度需要为2.56MHz。请注意,这意味着输出点的“循环”必须能够从查找表中读取值并将其以1 / 2,560,000或0.39uS的速率发送到DAC。因此,处理器的速度将决定最大频率是多少。 提高速度的一种方法是在查找表中每隔一秒钟输出一次语音。这种效果使速度加倍,但导致输出效果不尽人意。我使用这种方法来允许振荡器以比处理器可以提供的速度高得多的速度运行,但是输出质量因此受到了影响。 随着更高频率跳过更多点而导致输出性能下降 构建一个简单的振荡器模块 因为ATtiny1614处理器仅采用SMD封装,所以我决定在振荡器PCB上主要使用SMD封装。用户界面是一个由MAX7219 LED驱动器和旋转编码器驱动的5位7段显示模块。该板上还包含用于每个旋转编码器触点的施密特触发器及其按动开关。这将消除机械触点的反跳。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值