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)); // 輸出高位字節
留言
張貼留言