2013-05-05 136 views
0

我在Arduino的使這個小實驗方案,看看如何功能低位字節()高位字節()工作。傳遞一個值時它們應該返回什麼? 在串行顯示器在輸入字符「9」它打印以下內容:lowByte()和highByte()函數有什麼作用?

9 
0 
218 
255 

那如何來的呢?此外,最後2行正在輸入所有值。這是爲什麼發生?

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 
} 

}

回答

0

int是Arduino的一個16位的整數。所以你正在讀取高字節和低字節。

由於實際的緩衝區是"9\n",這就是爲什麼第二位打印出「有趣」的數字,因爲用'0'減去結果。

+0

但爲什麼我收到0? 9是1001二進制。在那種情況下,不要低於01001? – Ghost 2013-05-05 16:01:17

+0

低字節是'00001001',它們都是一樣的東西! – leppie 2013-05-05 16:04:34

+0

嘿,我只是困惑在這裏,菜鳥的錯誤。爲什麼我不打印0而不是'00001001'? – Ghost 2013-05-05 16:06:47

0

Serial.print需要格式化爲字節輸出,如果這是你想看到的。

嘗試:

Serial.print(lowByte, BYTE) 
1

如果你有這樣的數據:

10101011 11001101 // original 

// HighByte() get: 
10101011 

// LowByte() get: 
11001101 
相關問題