Shift registers working
Diff: ShiftReg.cpp
- Revision:
- 2:b565b6a8f612
- Parent:
- 1:9cc13bd590df
diff -r 9cc13bd590df -r b565b6a8f612 ShiftReg.cpp --- a/ShiftReg.cpp Tue May 07 13:19:27 2019 +0000 +++ b/ShiftReg.cpp Tue May 07 13:53:06 2019 +0000 @@ -1,7 +1,36 @@ #include "mbed.h" #include "ShiftReg.h" -ShiftReg::ShiftReg(PinName data, PinName store, PinName clock ): _ds(data), _st(store), _sh(clock){}//Constructor +ShiftReg::ShiftReg(PinName data, PinName store, PinName clock, PinName enable ): _ds(data), _st(store), _sh(clock), _en(enable)//Constructor +{ + _en = 1; +} +void ShiftReg::Write (uint16_t data) +{ + uint16_t mask; + mask = 0x8000; + for (uint8_t i = 0; i < 16; i++) + { + if (data & mask) + { + _ds = 1; + } + else + { + _ds = 0; + } + + mask = mask >> 1; + + _sh = 0; + _sh = 1; + } + //Latch + _st = 1; + _st = 0; + //Latch + _en = 0; +} void ShiftReg::ShiftByte (uint16_t data, BitOrd ord ) { uint16_t mask; @@ -36,6 +65,7 @@ _sh = 0; _sh = 1; } + _en = 0; } void ShiftReg::ShiftBit(int8_t data) {