2024-06-30 06:02 PM
Hi i m coding function to write 8 bit data to a slave device, what does the (byte & 0x01) do in the for loop and what does the shift right statement ( byte = byte >> 1;) do ?
void write8bit(uint8_t byte)
{
int i;
for (i = 0; i<8; i++)
{
lowClk();
if (byte & 0x01)
{
Data_HI();
}
else
{
Data_Lo();
}
Delay(3);
byte = byte >> 1;
HiClk();
Delay(3);
}
}
2024-06-30 07:16 PM
It's implementing a LSB (least significant bit) first method, the & 1 check bit zero, the shift >>1 rotates the byte so the next check of bit 0 will have the subsequent bit
ie
Bit 0
Bit 1
Bit 2
Bit 3
..
Bit 7
2024-06-30 11:42 PM
To put it precisely: >>1 does not rotate, but shifts.
Beginners like @StanCosgrove should understand the difference:
Regards
/Peter