Interface to 74HC165 shift register
#define loadPin PORTE.F0 // 74HC165 PIN #1
#define clockPin PORTE.F1 // 74HC165 PIN #2
#define dataPin PORTE.F2 // 74HC165 PIN #10
#define clkENPin PORTE.F3 // 74HC165 PIN #15
// Gen working vars
unsigned char i = 0;
unsigned char j = 0;
// Specific vars
unsigned char bitValues[8] = {1,2,4,8,16,32,64,128};
unsigned char bcdDataReadIn = 0;
unsigned char readRegister = 0;
unsigned char shiftIndataFromRegister()
{
// Null
bcdDataReadIn = 0;
// Enable the register!
clkENPin = 0;
// Tell register to look at the state of its D0 - D7 pins
loadPin = 1;
asm nop;
loadPin = 0;
// Read the bits on the register and store in var bcdDataReadIn
for (i = 0; i < 7; i++)
{
// Clock the register
clockPin = 1;
asm nop;
clockPin = 0;
// Compare: bit set?
if (dataPin == 1)
{
// Add to BCD value
bcdDataReadIn += bitValues
}
}
return bcdDataReadIn;
}
void main()
{
while(1)
{
// Boolean flag set to perform this function?
if (readRegister == 1)
{
// Fetch it! range is in 0-255 stored in return var
shiftIndataFromRegister(bcdDataReadIn);
}
}
}