在 BASCOM-AVR 中连接两个字节

Join two bytes in BASCOM-AVR

如何在 BASCOM-AVR 中连接两个字节以生成 16 位 int 变量?

部分答案:

子问题 1

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

子问题 2

如果你想屏蔽(或select)一个词的特定位,使用AND运算符,总结感兴趣的位的位值 - 例如,如果你想到select变量FLAGS的第一位和第三位(将第一位算作字的LSB),你会看到FLAGS AND 5的值 - 5是二进制的0000000000000101,所以你保证结果中的所有位都为 0,除了第一位和第三位,它们将携带它们在 FLAGS 中显示的任何值(这是 'bitwise AND')。

shift-left/right 二进制函数:

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

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

varn = MAKEINT(LSB , MSB)

等效代码为:

varn = (256 * MSB) + LSB
  • Varn:将被赋予转换值的变量。
  • LSB:变量或常量,LS Byte。
  • MSB:具有 MS 字节的变量或常量。

例如:

varn = MAKEINT(&B00100010,&B11101101)

结果是&B1110110100100010