/**
   Controlling the Pi Pico GPIO with direct register access (SIO registers + IO Bank 0 registers)
*/
const byte ADDR0 = 18 ;
const byte ADDR1 = 19 ;
const byte ADDR2 = 20;
const byte ADDR3 = 21;
const uint32_t SIO_MASK = (1 << ADDR0) | (1 << ADDR1) | (1 << ADDR2) | (1 << ADDR3);

void setup() {
  pinMode(8, OUTPUT);
  gpio_set_function(ADDR0, GPIO_FUNC_SIO);
  gpio_set_function(ADDR1, GPIO_FUNC_SIO);
  gpio_set_function(ADDR2, GPIO_FUNC_SIO);
  gpio_set_function(ADDR3, GPIO_FUNC_SIO);

  gpio_set_dir_out_masked(SIO_MASK);

  for (uint8_t i = 0; i < 3; i++) {
    gpio_put_masked(SIO_MASK, SIO_MASK);
    delay(250);
    gpio_clr_mask(SIO_MASK);
    delay(250);
  }
  delay(1000);
}

void loop() {
  for (uint32_t i = 0; i < 16; i++) {
    uint32_t addr = (bitRead(i, 0) << ADDR0) | (bitRead(i, 1) << ADDR1) | (bitRead(i, 2) << ADDR2) | (bitRead(i, 3) << ADDR3);
    gpio_put_masked(SIO_MASK, addr);
    delay(500);
  }
}
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT