Skip to content

Commit 06c1dd3

Browse files
dineshgit411LinjingZhang
authored andcommitted
cores/xmc: Implemented shift.
Signed-off-by: MDin <Dinesh.M-EE@infineon.com>
1 parent 62431ac commit 06c1dd3

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

cores/xmc/Shift.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#include "Arduino.h"
2+
3+
void shiftOut(pin_size_t ulDataPin, pin_size_t ulClockPin, BitOrder ulBitOrder, uint8_t ulVal) {
4+
uint8_t i;
5+
6+
for (i = 0; i < 8; i++) {
7+
if (ulBitOrder == LSBFIRST) {
8+
digitalWrite(ulDataPin, !!(ulVal & (1 << i)));
9+
} else {
10+
digitalWrite(ulDataPin, !!(ulVal & (1 << (7 - i))));
11+
}
12+
13+
digitalWrite(ulClockPin, HIGH);
14+
digitalWrite(ulClockPin, LOW);
15+
}
16+
}
17+
18+
uint8_t shiftIn(pin_size_t ulDataPin, pin_size_t ulClockPin, BitOrder ulBitOrder) {
19+
uint8_t value = 0;
20+
uint8_t i;
21+
22+
for (i = 0; i < 8; ++i) {
23+
digitalWrite(ulClockPin, HIGH);
24+
25+
if (ulBitOrder == LSBFIRST) {
26+
value |= digitalRead(ulDataPin) << i;
27+
} else {
28+
value |= digitalRead(ulDataPin) << (7 - i);
29+
}
30+
31+
digitalWrite(ulClockPin, LOW);
32+
}
33+
34+
return value;
35+
}

0 commit comments

Comments
 (0)