1

如何在 BASCOM-AVR 中加入两个字节以创建 16 位 int 变量?

4

3 回答 3

2

部分答案:

子问题 1

如果一个字节存储在变量中BYTE1,另一个字节存储在变量中BYTE2,则可以将它们合并到WORD1许多 BASICS 中WORD1 = BYTE1: WORD1 = (WORD1 SHL 8) OR BYTE2。这使得BYTE1进入 的高位WORD1,并BYTE2进入低位。

子问题 2

如果要屏蔽(或选择)字的特定位,请使用AND运算符,将感兴趣位的位值相加 - 例如,如果您要选择第一位和第三位(将第一位计为单词的 LSB) FLAGS,您会看到FLAGS AND 5- 5 的值是 binary 0000000000000101,因此您保证结果中的所有位都将为 0,除了第一个和第三个,它们将携带它们显示的任何值FLAGS(这是“按位与”)。

于 2019-02-13T18:19:49.237 回答
1

左移/右移二进制函数:

Byte1# = 255
PRINT HEX$(Byte1#)
Byte1# = SHL(Byte1#, 8) ' shift-left 8 bits
PRINT HEX$(Byte1#)
END
' function to shift-left binary bits
FUNCTION SHL (V#, X)
    SHL = V# * 2 ^ X
END FUNCTION
' function to shift-right binary bits
FUNCTION SHR (V#, X)
    SHR = V# / 2 ^ X
END FUNCTION
于 2019-02-16T05:26:18.957 回答
0

您可以在 BASCOM 索引中找到它:

varn = MAKEINT(LSB , MSB)

等效代码是:

varn = (256 * MSB) + LSB
  • Varn:将分配转换后的值的变量。
  • LSB:LS 字节的变量或常数。
  • MSB:与 MS 字节相关的变量或常量。

例如:

varn = MAKEINT(&B00100010,&B11101101)

结果是&B1110110100100010

于 2019-10-05T16:26:39.103 回答