我想编写一个用于16传感器sepathfinder机器人(微处理器:ATmega16A)的程序。我有三个问题:
如何将两个字节连接到word或int变量中?
我使用“选择大小写”编写程序。例如(代码是8传感器机器人的代码):
Select Case Pina
Case &B00000000:...
有时候,我只想扫描某些特定的传感器,而不关心其他传感器。例如:xx11xxxx。我想在那些位为1且不关心其他位时做些事情。一种方法是编写许多案例。但是我不想浪费记忆和时间。有什么更好的方法吗?
我在许多探路机器人上看到了this board。你知道这是什么吗?
答案 0 :(得分:1)
如果一个字节存储在变量BYTE1
中,而另一个字节存储在变量BYTE2
中,则可以使用WORD1
将它们合并到许多BASICS中的WORD1 = BYTE1: WORD1 = (WORD1 SHL 8) OR BYTE2
中。这使BYTE1
成为WORD1
的高位,而BYTE2
成为低位。
如果要屏蔽(或选择)单词的特定位,请使用AND
运算符,将感兴趣的位的位值相加-例如,如果要选择第一个和第三个变量FLAGS
的位(将第一个位作为单词的LSB计算),您将查看FLAGS AND 5
的值-5为二进制0000000000000101
,因此您可以保证所有结果中的位除第一个和第三个外均为0,它们将携带它们在FLAGS
中显示的任何值(这是“按位与”)。
答案 1 :(得分:0)
左/右二进制移位功能:
\W||
答案 2 :(得分:0)
简单(您可以在BASCOM索引中找到它):
varn = MAKEINT(LSB , MSB)
等效代码为:
varn = (256 * MSB) + LSB
例如:
varn = MAKEINT(&B00100010,&B11101101)
结果为&B1110110100100010
。