/led-bits.s
.thumb
.global sendword
sendword:
push {r4, r5, r6}
mov r1, #1
lsl r1, #23 // r1 - bit mask
ldr r3, =0x400b2024 // PORTB Set/Reset register
mov r4, #1
lsl r4, #16 // r4 - set
mov r5, #1 // r5 - reset (inverted due to output MOSFET driver)
mov r6, #24 // r6 - bit counter
b 2f
1:
sub r6, #1
beq 4f
lsl r0, #1
2:
mov r2, r0
and r2, r1
beq 3f
// 1 bit
str r4, // set
nop
nop
nop
nop
nop
nop
nop
nop
nop
str r5, // reset
b 1b
3:
str r4,
nop
nop
nop
nop
str r5,
nop
nop
nop
nop
b 1b
4:
pop {r4, r5, r6}
bx lr