我想为16传感器sepathfinder机器人编写一个程序(微处理器:ATmega16A)。我有三个问题:如何将两个字节连接到word或int变量?我用“……编写程序
如果一个字节存储在变量中 BYTE1 另一个存储在变量中 BYTE2 ,你可以将它们合并到 WORD1 在许多BASICS中 WORD1 = BYTE1: WORD1 = (WORD1 SHL 8) OR BYTE2 。这使得 BYTE1 进入高阶位 WORD1 ,和 BYTE2 进入低位。
BYTE1
BYTE2
WORD1
WORD1 = BYTE1: WORD1 = (WORD1 SHL 8) OR BYTE2
如果要屏蔽(或选择)单词的特定位,请使用 AND 运算符,总结感兴趣的位的位值 - 例如,如果要选择变量的第一位和第三位(将第一位计为单词的LSB) FLAGS ,你会看看的价值 FLAGS AND 5 - 5是二进制 0000000000000101 ,所以你要保证结果中的所有位都是0,除了第一个和第三个,它们将带有它们显示的任何值。 FLAGS (这是'按位AND')。
AND
FLAGS
FLAGS AND 5
0000000000000101
左移/右移二进制的功能:
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