Shift registers working

Files at this revision

API Documentation at this revision

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
--- 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)
 {
--- 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
 };