.program ws2812 .side_set 1 .wrap_target bitloop: out x 1 side 0 [6]; Drive low. Side-set still takes place before instruction stalls. jmp !x do_zero side 1 [3]; Branch on the bit we shifted out previous delay. Drive high. do_one: jmp bitloop side 1 [4]; Continue driving high, for a one (long pulse) do_zero: nop side 0 [4]; Or drive low, for a zero (short pulse) .wrap