shiftOut()

 shiftOut()

說明

將一個字節的數據通過移位輸出的方式逐位輸出。數據可以從最高位(最左位)或從最低位(最右位)輸出。在輸出數據時,當一位數據寫入數據輸出引腳時,時鐘引腳將輸出脈衝信號,指示該位數據已被寫入數據輸出引腳等待讀取。

如果讀取數據的設備是在Arduino的時鐘引腳脈衝信號上升沿讀取Arduino的輸出數據,請確保在調用shiftOut()輸出數據前,應先通過digitalWrite(clockPin, LOW)語句,將時鐘引腳設置為LOW。這樣做是為了確保數據讀取準確無誤。

以上介紹的方法使用軟件實現數據輸出操作。如果想要通過硬件方法輸出數據,請參閱Arduino的SPI庫函數。通過硬件方法輸出數據更加快捷,但Arduino只有幾個特定引腳可用於使用硬件方法輸出數據。


語法

shiftOut(dataPin, clockPin, bitOrder, value)


參數

dataPin – 數據引腳

clockPin – 時鐘引腳

bitOrder – 移位順序 ( 高位先出 或 低位先出)

val – 數據


返回值


注意

使用shiftOut()函數前,數據引腳(dataPin)和時鐘引腳(clockPin)必須先通過pinMode()指令設置為輸出(OUTPUT)模式。

shiftOut一次只能輸出1字節(8位)數據。如果需要輸出大於255的數值,需要通過多次使用shiftOut()輸出數據。如以下程序所示:

[c gutter=”0″]

// 高字節先出模式

int data = 500; //待輸出數據

shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // 輸出高位字節

shiftOut(dataPin, clock, MSBFIRST, data); // 輸出低位字節


// 低字節先出模式

data = 500; //待輸出數據

shiftOut(dataPin, clock, LSBFIRST, data); // 輸出低位字節

shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); // 輸出高位字節

留言