在BASCOM-AVR中加入两个字节

时间:2019-02-13 17:59:08

标签: avr robotics basic robot

我想编写一个用于16传感器sepathfinder机器人(微处理器:ATmega16A)的程序。我有三个问题:

  1. 如何将两个字节连接到word或int变量中?

  2. 我使用“选择大小写”编写程序。例如(代码是8传感器机器人的代码):

    Select Case Pina
    Case &B00000000:...
    

    有时候,我只想扫描某些特定的传感器,而不关心其他传感器。例如:xx11xxxx。我想在那些位为1且不关心其他位时做些事情。一种方法是编写许多案例。但是我不想浪费记忆和时间。有什么更好的方法吗?

  3. 我在许多探路机器人上看到了this board。你知道这是什么吗?

3 个答案:

答案 0 :(得分:1)

部分答案:

子问题1

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

子问题2

如果要屏蔽(或选择)单词的特定位,请使用AND运算符,将感兴趣的位的位值相加-例如,如果要选择第一个和第三个变量FLAGS的位(将第一个位作为单词的LSB计算),您将查看FLAGS AND 5的值-5为二进制0000000000000101,因此您可以保证所有结果中的位除第一个和第三个外均为0,它们将携带它们在FLAGS中显示的任何值(这是“按位与”)。

答案 1 :(得分:0)

左/右二进制移位功能:

\W||

答案 2 :(得分:0)

简单(您可以在BASCOM索引中找到它):

varn = MAKEINT(LSB , MSB)

等效代码为:

varn = (256 * MSB) + LSB
  • 变量:将分配有转换后值的变量。
  • LSB:带有LS字节的变量或常量。
  • MSB:具有MS字节的变量或常量。

例如:

varn = MAKEINT(&B00100010,&B11101101)

结果为&B1110110100100010