Shift registers working
Revision 1:9cc13bd590df, committed 2019-05-07
- Comitter:
- mwthewsey
- Date:
- Tue May 07 13:19:27 2019 +0000
- Parent:
- 0:a0e3fd47970f
- Commit message:
- arse bicuits
Changed in this revision
ShiftReg.cpp | Show annotated file Show diff for this revision Revisions of this file |
ShiftReg.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r a0e3fd47970f -r 9cc13bd590df ShiftReg.cpp --- 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;
diff -r a0e3fd47970f -r 9cc13bd590df ShiftReg.h --- a/ShiftReg.h Fri Nov 09 01:03:30 2012 +0000 +++ b/ShiftReg.h Tue May 07 13:19:27 2019 +0000 @@ -63,10 +63,7 @@ { public: /** Bit order out format */ - enum BitOrd { - MSBFirst = 0x80, /**< Most significant bit first */ - LSBFirst = 0x01 /**< Least significant bit first */ - }; + enum BitOrd {MSBFirst = 0x8000, /**< Most significant bit first */LSBFirst = 0x0001 /**< Least significant bit first */}; /** Create a ShiftReg interface to shift register * @@ -74,36 +71,24 @@ * @param store Pin to store register * @param clock Pin to shift into register */ - ShiftReg - (PinName data - ,PinName store - ,PinName clock - ); + ShiftReg(PinName data, PinName store, PinName clock);//Constructor /** Shift out 8-bit data via the serial pin * * @param data Data to be shifted out via the serial pin * @param order Bit order to shift out data. Default is MSBFirst */ - void - ShiftByte - (int8_t data - ,BitOrd ord = MSBFirst - ); + void ShiftByte(uint16_t data,BitOrd ord = MSBFirst);//Shifting the data member function /** Shift out 1-bit data via the serial pin * * @param data Data to be shifted out via the serial pin */ - void - ShiftBit - (int8_t data = 0 - ); + void ShiftBit(int8_t data = 0);//Shifting a single bit in /** Latch data out */ - void - Latch(); + void Latch(); private: DigitalOut _ds; // Serial in