0

我在 Arduino 中制作了这个小型实验程序,以查看函数lowByte()highByte()是如何工作的。当传递一个值时,它们究竟应该返回什么?在串行监视器中输入字符“9”时,它会打印以下内容:

9 
0
218
255

这是怎么来的?此外,正在为所有输入的值打印最后两行。为什么会这样?

int i=12;

void setup()
{
 Serial.begin(9600); 
}

void loop()
{
if(Serial.available())
{
 i = Serial.read() - '0';  // conversion of character to number. eg, '9' becomes 9.
 Serial.print(lowByte(i)); // send the low byte
 Serial.print(highByte(i)); // send the high byte
}

}

4

4 回答 4

3

如果你有这些数据:

10101011 11001101 // original

// HighByte() get:
10101011

// LowByte() get: 
11001101
于 2016-05-15T18:36:08.697 回答
0

Serial.print needs to be formatted to a byte output if that's what you want to see.

Try:

Serial.print(lowByte, BYTE)
于 2014-10-12T13:42:26.910 回答
0

Anint是 Arduino 上的 16 位整数。因此,您将高低部分作为一个字节读取。

由于实际缓冲区是"9\n",这就是第二位打印出“有趣”数字的原因,因为用 减去结果'0'

于 2013-05-05T15:47:54.910 回答
0

除了 Rafalenfs 的回答,您是否应该提供更大的数据类型:

00000100 10101011 11001101 // original

// HighByte() will NOT return: 00000100, but will return:
10101011

// LowByte() will still return: 
11001101

Highbyte() 返回第二低位(由文档指定:https ://www.arduino.cc/reference/en/language/functions/bits-and-bytes/highbyte/ )

于 2019-09-06T02:28:49.960 回答