"""
Copyright © 2024 Walkline Wang (https://walkline.wang)
"""
from machine import SPI, Pin


print()
using_spi = True

if using_spi:
    spi = SPI(1, baudrate=4_000_000)
    spi.init(polarity=0, phase=0, bits=8, firstbit=SPI.MSB)
else:
    pin_miso = Pin(2, Pin.IN)
    pin_sck  = Pin(6, Pin.OUT, value=0)

pin_ce = Pin(5, Pin.OUT, value=0)
pin_pl = Pin(3, Pin.OUT, value=1)

def load_data_spi():
    # load data
    pin_pl.off()
    pin_pl.on()

    # shift all data
    data = bytearray([0])
    spi.readinto(data)

    return data

def load_data_for():
    # load data
    pin_pl.off()
    pin_pl.on()

    data = 0

    for _ in range(8):
        data <<= 1
        data |= pin_miso.value()

        # shift data
        pin_sck.off()
        pin_sck.on()

    return bytearray([data])


if __name__ == '__main__':
    last_data = b'\x00'

    while True:
        data = load_data_spi() if using_spi else load_data_for()

        if last_data != data:
            last_data = data

            print(' ',
                  ' '.join(reversed(f'{data[0]:08b}')),
                  end='\r')
74HC165