Adding shiftIn() from Wiring (no count or delaytime though).

This commit is contained in:
David A. Mellis 2010-08-11 22:59:00 +00:00
parent cbc52cbe3c
commit 57e2c152f1
3 changed files with 20 additions and 3 deletions

View File

@ -157,6 +157,7 @@ noInterrupts KEYWORD2 NoInterrupts
noTone KEYWORD2 NoTone noTone KEYWORD2 NoTone
pinMode KEYWORD2 PinMode pinMode KEYWORD2 PinMode
pulseIn KEYWORD2 PulseIn pulseIn KEYWORD2 PulseIn
shiftIn KEYWORD2 ShiftIn
shiftOut KEYWORD2 ShiftOut shiftOut KEYWORD2 ShiftOut
tone KEYWORD2 Tone tone KEYWORD2 Tone

View File

@ -117,7 +117,8 @@ void delay(unsigned long);
void delayMicroseconds(unsigned int us); void delayMicroseconds(unsigned int us);
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val); void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);
void attachInterrupt(uint8_t, void (*)(void), int mode); void attachInterrupt(uint8_t, void (*)(void), int mode);
void detachInterrupt(uint8_t); void detachInterrupt(uint8_t);

View File

@ -24,9 +24,24 @@
#include "wiring_private.h" #include "wiring_private.h"
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val) uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) {
uint8_t value = 0;
uint8_t i;
for (i = 0; i < 8; ++i) {
digitalWrite(clockPin, HIGH);
if (bitOrder == LSBFIRST)
value |= digitalRead(dataPin) << i;
else
value |= digitalRead(dataPin) << (7 - i);
digitalWrite(clockPin, LOW);
}
return value;
}
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val)
{ {
int i; uint8_t i;
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST) if (bitOrder == LSBFIRST)