Added a 74HC595 shift register
A abstract base class for 74HC595 shift registers without reset and output-enable functionality.
This commit is contained in:
parent
4685956e82
commit
9f8ad33723
2 changed files with 45 additions and 0 deletions
27
ShiftRegister.cpp
Normal file
27
ShiftRegister.cpp
Normal file
|
@ -0,0 +1,27 @@
|
|||
#include "ShiftRegister.h"
|
||||
|
||||
void ShiftRegister::set(uint8_t value)
|
||||
{
|
||||
for (uint8_t bit = 0; bit < 8; ++bit)
|
||||
{
|
||||
setSerialPin(value & (1 << (7 - bit)));
|
||||
pulseShiftPin();
|
||||
}
|
||||
|
||||
pulseStoragePin();
|
||||
}
|
||||
|
||||
void ShiftRegister::pulseShiftPin()
|
||||
{
|
||||
setShiftPin(false);
|
||||
setShiftPin(true);
|
||||
setShiftPin(false);
|
||||
}
|
||||
|
||||
void ShiftRegister::pulseStoragePin()
|
||||
{
|
||||
setStoragePin(false);
|
||||
setStoragePin(true);
|
||||
setStoragePin(false);
|
||||
}
|
||||
|
18
ShiftRegister.h
Normal file
18
ShiftRegister.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
class ShiftRegister
|
||||
{
|
||||
public:
|
||||
void set(uint8_t value);
|
||||
|
||||
private:
|
||||
virtual void setSerialPin(bool value) = 0;
|
||||
virtual void setShiftPin(bool value) = 0;
|
||||
virtual void setStoragePin(bool value) = 0;
|
||||
|
||||
void pulseShiftPin();
|
||||
void pulseStoragePin();
|
||||
};
|
||||
|
Loading…
Reference in a new issue