This library lets you control the addressable RGB LED strips from Pololu Robotics. Forked to add selectable colour order (Support RGB or GRB Leds)
Fork of PololuLedStrip by
led_strip_write_color.s
- Committer:
- DavidEGrayson
- Date:
- 2013-02-28
- Revision:
- 4:d3b60bd43811
- Parent:
- 0:06475317f283
- Child:
- 5:690fdfb595de
File content as of revision 4:d3b60bd43811:
AREA asm_func, CODE, READONLY EXPORT led_strip_write_color led_strip_write_color push {r4, r12, r7} ldr r12, [r0] ; Read the next color. rbit r12, r12 ; Reverse the order of the bits. rev r12, r12 ; Reverse the order of the bytes. mov r7, #24 ; Initialize the loop counter register. send_led_strip_bit str r3, [r1] ; Drive the line high. rrxs r12, r12 ; Rotate right through carry. nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop it cc ; If the bit to send it 0... strcc r3, [r2] ; Drive the line low. nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop it cs ; If the bit to send is 1... strcs r3, [r2] ; Drive the line low. ldr r4, =delay_region add r4, r4, 34*2 blx r4 sub r7, r7, #1 ; Decrement the loop counter. cbz r7, led_strip_asm_end ; If we have sent 24 bits, go to the end. b send_led_strip_bit ; Otherwise, go back and send another bit. led_strip_asm_end pop {r4, r12, r7} bx lr delay_region ; The following is 128 no-ops nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop bx lr ; return END