diff options
Diffstat (limited to 'led.c')
-rw-r--r-- | led.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -3,7 +3,8 @@ #include <avr/io.h> -static void signal_bit_0() { +static void signal_bit_0() +{ asm volatile ( "sbi %0, %1\n\t" "cbi %0, %1\n\t" @@ -15,7 +16,8 @@ static void signal_bit_0() { ); } -static void signal_bit_1() { +static void signal_bit_1() +{ asm volatile ( "sbi %0, %1\n\t" "rjmp .+0\n\t" @@ -28,7 +30,8 @@ static void signal_bit_1() { ); } -static void signal_byte(unsigned char byte) { +static void signal_byte(unsigned char byte) +{ for (unsigned char mask = 0x80; mask != 0; mask >>= 1) { if (byte & mask) signal_bit_1(); @@ -37,13 +40,15 @@ static void signal_byte(unsigned char byte) { } } -static void signal_led(struct colour *c) { +static void signal_led(struct colour *c) +{ signal_byte(c->r); signal_byte(c->g); signal_byte(c->b); } -void led_signal_sequence(int num_leds, struct colour *seq, int num_seq, int col_width, int seq_start) { +void led_signal_sequence(int num_leds, struct colour *seq, int num_seq, int col_width, int seq_start) +{ for(int i = 0; i < num_leds; ++i) { int j, p = i - seq_start; |