Shift registers working
Revision 2:b565b6a8f612, committed 2019-05-07
- Comitter:
- mwthewsey
- Date:
- Tue May 07 13:53:06 2019 +0000
- Parent:
- 1:9cc13bd590df
- Commit message:
- shift regs working
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 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) {
diff -r 9cc13bd590df -r b565b6a8f612 ShiftReg.h --- a/ShiftReg.h Tue May 07 13:19:27 2019 +0000 +++ b/ShiftReg.h Tue May 07 13:53:06 2019 +0000 @@ -71,7 +71,7 @@ * @param store Pin to store register * @param clock Pin to shift into register */ - ShiftReg(PinName data, PinName store, PinName clock);//Constructor + ShiftReg(PinName data, PinName store, PinName clock, PinName enable);//Constructor /** Shift out 8-bit data via the serial pin * @@ -79,7 +79,7 @@ * @param order Bit order to shift out data. Default is MSBFirst */ void ShiftByte(uint16_t data,BitOrd ord = MSBFirst);//Shifting the data member function - + void Write(uint16_t data);//Writing data in it /** Shift out 1-bit data via the serial pin * * @param data Data to be shifted out via the serial pin @@ -94,6 +94,7 @@ DigitalOut _ds; // Serial in DigitalOut _st; // store register or latch DigitalOut _sh; // shift register + DigitalOut _en; // shift enable BitOrd _ord; // Bit order to shift out data };