A library interface to shift register such as NXP 74HCT595

Dependents:   DiscoTech filter_implement System_Project_V6 LM35functionshield ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ShiftReg.cpp Source File

ShiftReg.cpp

00001 #include "mbed.h"
00002 #include "ShiftReg.h"
00003 
00004 #define MY_DEBUG 0
00005 
00006 ShiftReg::ShiftReg
00007 (PinName data
00008 ,PinName store
00009 ,PinName clock
00010 ): _ds(data), _st(store), _sh(clock)
00011 {
00012 }
00013 
00014 
00015 void ShiftReg::ShiftByte
00016 (int8_t  data
00017 ,BitOrd  ord
00018 )
00019 {
00020     uint8_t mask;
00021     
00022     if (ord == MSBFirst) mask = 0x80;
00023     else                 mask = 0x01;
00024     
00025     for (int i = 0; i < 8; i++)
00026     {
00027         if (data & mask) _ds = 1;
00028         else             _ds = 0;
00029 
00030 #if MY_DEBUG > 0
00031         printf("%d ", _ds.read());
00032 #endif /* MY_DEBUG */
00033 
00034         if (ord == MSBFirst) mask = mask >> 1;
00035         else                 mask = mask << 1;
00036         
00037         _sh = 0;
00038         _sh = 1;
00039     }
00040 
00041 #if MY_DEBUG > 0
00042     printf("\n");
00043 #endif /* MY_DEBUG */
00044 
00045 }
00046 
00047 void
00048 ShiftReg::ShiftBit
00049 (int8_t  data
00050 )
00051 {
00052     _ds = data;
00053     _sh = 0;
00054     _sh = 1;
00055 }
00056 
00057 void 
00058 ShiftReg::Latch
00059 (
00060 )
00061 {
00062   _st = 1;
00063   _st = 0;
00064 }