diff --git a/firmware.asm b/firmware.asm index 58b47c7..658a89e 100644 --- a/firmware.asm +++ b/firmware.asm @@ -50,40 +50,62 @@ main: ; Start up program rcall init_ports ; Initialize MCU ports loop: ; Program loop - rcall effect_1 + rcall effect_1 rjmp loop effect_1: push r17 push r18 push r19 + push r20 + + in r20, LED_PORT ; ; Set first led to high ldi r17, 0xf1 out LED_PORT, r17 - rcall delay_100ms + rcall delay_50ms - ; - ; Shift remaining bits ldi r17, 0x01 - - ; - ; Loop counter ldi r19, 3 - - effect_1_loop: + _eff_1_shift_l: ; Shift bits to left loop ldi r18, 0xf0 lsl r17 add r18, r17 out LED_PORT, r18 - rcall delay_100ms + rcall delay_50ms dec r19 - brne effect_1_loop + brne _eff_1_shift_l + + + ; + ; Set first led to high + ldi r17, 0xf8 + out LED_PORT, r17 + rcall delay_50ms + + ; + ; Shift remaining bits + ldi r17, 0xf8 + ldi r19, 3 + _eff_1_shift_r: + ldi r18, 0xf0 + lsr r17 + sub r18, r17 + out LED_PORT, r18 + rcall delay_50ms + dec r19 + brne _eff_1_shift_r + + ; + ; Out saved PORT values + out LED_PORT, r20 pop r17 pop r18 pop r19 + pop r20 ret init_ports: ; Init MCU ports @@ -116,17 +138,17 @@ ldi r18, outer_count ldi r18, outer_count ret -delay_100ms: +delay_50ms: push r18 push r19 -ldi r18, 130 ; 1c -ldi r19, 222 ; 1c - _loop_d_100ms: +ldi r18, 65 ; 1c +ldi r19, 239 ; 1c + _loop_d_50ms: dec r19 ; 1c - brne _loop_d_100ms ; 2 or 1c = 665c + brne _loop_d_50ms ; 2 or 1c = 665c dec r18 ; 1c - brne _loop_d_100ms ; 2 or 1c + brne _loop_d_50ms ; 2 or 1c nop pop r19 pop r18 diff --git a/firmware.hex b/firmware.hex index a26a0d7..092d5c2 100644 --- a/firmware.hex +++ b/firmware.hex @@ -1,12 +1,14 @@ :020000020000FC -:100000000FED0DBF15D001D0FECF1F932F933F935F -:1000100011EF1BBB1ED011E033E020EF110F210FB9 -:100020002BBB17D03A95C9F71F912F913F91089597 -:100030000FE00ABB02950BBBBA9AC298002708953D -:1000400024E683EC99E00197F1F72A95D1F724E6AD -:1000500008952F933F9322E83EED3A95F1F72A95C4 -:10006000E1F700003F912F9108954D656D6F727912 -:10007000206C65642067616D652E20577269747409 -:10008000656E2062792053657267657920596172C7 -:0E0090006B6F762032372E30392E32303231FF +:100000000FED0DBF25D001D0FECF1F932F933F934F +:100010004F934BB311EF1BBB2CD011E033E020EF1B +:10002000110F210F2BBB25D03A95C9F718EF1BBB39 +:1000300020D018EF33E020EF1695211B2BBB19D0F1 +:100040003A95C9F74BBB1F912F913F914F9108955E +:100050000FE00ABB02950BBBBA9AC298002708951D +:1000600024E683EC99E00197F1F72A95D1F724E68D +:1000700008952F933F9321E43FEE3A95F1F72A95A7 +:10008000E1F700003F912F9108954D656D6F7279F2 +:10009000206C65642067616D652E205772697474E9 +:1000A000656E2062792053657267657920596172A7 +:0E00B0006B6F762032372E30392E32303231DF :00000001FF