位屏蔽数组的索引,Arduino环境

时间:2009-07-17 08:06:49

标签: c arduino bitmask

我正在尝试从结构中取一个16位无符号整数,屏蔽它的前8位,并将其用作具有函数analogWrite的数组的索引,该函数采用Arduino上的输出引脚和输出byte作为参数。有问题的代码如下所示:analogWrite(outputPin, my_array[myStructure->data & 0xFF00 >> 8]);

不幸的是,这段代码不起作用。我总是把零作为输出。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

Operator precedence

此:

myStructure->data & 0xFF00 >> 8

相当于:

myStructure->data & (0xFF00 >> 8)

但你想要:

(myStructure->data & 0xFF00) >> 8

答案 1 :(得分:3)

我怀疑运营商优先。尝试:

analogWrite(outputPin, my_array[(myStructure->data & 0xFF00) >> 8]);

答案 2 :(得分:0)

查看C的优先级表,您可以执行以下操作:

  1. 从myStructure获取数据
  2. 右移0xFF00 8步
  3. 按位,数据

    使用更多行或括号!