Shift registers working
Diff: ShiftReg.cpp
- Revision:
- 1:9cc13bd590df
- Parent:
- 0:a0e3fd47970f
- Child:
- 2:b565b6a8f612
--- a/ShiftReg.cpp Fri Nov 09 01:03:30 2012 +0000 +++ b/ShiftReg.cpp Tue May 07 13:19:27 2019 +0000 @@ -1,63 +1,50 @@ #include "mbed.h" #include "ShiftReg.h" -#define MY_DEBUG 0 - -ShiftReg::ShiftReg -(PinName data -,PinName store -,PinName clock -): _ds(data), _st(store), _sh(clock) -{ -} - - -void ShiftReg::ShiftByte -(int8_t data -,BitOrd ord -) +ShiftReg::ShiftReg(PinName data, PinName store, PinName clock ): _ds(data), _st(store), _sh(clock){}//Constructor +void ShiftReg::ShiftByte (uint16_t data, BitOrd ord ) { - uint8_t mask; - - if (ord == MSBFirst) mask = 0x80; - else mask = 0x01; - - for (int i = 0; i < 8; i++) + uint16_t mask; + if (ord == MSBFirst) + { + mask = 0x8000; + } + else + { + mask = 0x0001; + } + for (uint8_t i = 0; i < 16; i++) { - if (data & mask) _ds = 1; - else _ds = 0; - -#if MY_DEBUG > 0 - printf("%d ", _ds.read()); -#endif /* MY_DEBUG */ - - if (ord == MSBFirst) mask = mask >> 1; - else mask = mask << 1; + //_ds = data; + if (data & mask) + { + _ds = 1; + } + else + { + _ds = 0; + } + if (ord == MSBFirst) + { + mask = mask >> 1; + } + else + { + mask = mask << 1; + } _sh = 0; _sh = 1; } - -#if MY_DEBUG > 0 - printf("\n"); -#endif /* MY_DEBUG */ - } - -void -ShiftReg::ShiftBit -(int8_t data -) +void ShiftReg::ShiftBit(int8_t data) { _ds = data; _sh = 0; _sh = 1; } -void -ShiftReg::Latch -( -) +void ShiftReg::Latch() { _st = 1; _st = 0;