From 649f978224d79947d679612e4bcb326280f4f963 Mon Sep 17 00:00:00 2001 From: luca Date: Fri, 26 Apr 2019 14:32:43 +0200 Subject: Minor optimization in shiftOut function --- cores/arduino/wiring_shift.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'cores') diff --git a/cores/arduino/wiring_shift.c b/cores/arduino/wiring_shift.c index 2b6f7a8..042a95a 100644 --- a/cores/arduino/wiring_shift.c +++ b/cores/arduino/wiring_shift.c @@ -42,10 +42,13 @@ void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) uint8_t i; for (i = 0; i < 8; i++) { - if (bitOrder == LSBFIRST) - digitalWrite(dataPin, !!(val & (1 << i))); - else - digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + if (bitOrder == LSBFIRST) { + digitalWrite(dataPin, val & 1); + val >>= 1; + } else { + digitalWrite(dataPin, val & 128); + val <<= 1; + } digitalWrite(clockPin, HIGH); digitalWrite(clockPin, LOW); -- cgit v1.2.3-18-g5258