refactor: effect_1 of leds

This commit is contained in:
Sergey Yarkov 2021-09-29 22:43:54 +03:00
parent ee5d4ed163
commit 3f3c4e41a5
2 changed files with 51 additions and 27 deletions

View File

@ -57,33 +57,55 @@ effect_1:
push r17 push r17
push r18 push r18
push r19 push r19
push r20
in r20, LED_PORT
; ;
; Set first led to high ; Set first led to high
ldi r17, 0xf1 ldi r17, 0xf1
out LED_PORT, r17 out LED_PORT, r17
rcall delay_100ms rcall delay_50ms
;
; Shift remaining bits
ldi r17, 0x01 ldi r17, 0x01
;
; Loop counter
ldi r19, 3 ldi r19, 3
_eff_1_shift_l: ; Shift bits to left loop
effect_1_loop:
ldi r18, 0xf0 ldi r18, 0xf0
lsl r17 lsl r17
add r18, r17 add r18, r17
out LED_PORT, r18 out LED_PORT, r18
rcall delay_100ms rcall delay_50ms
dec r19 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 r17
pop r18 pop r18
pop r19 pop r19
pop r20
ret ret
init_ports: ; Init MCU ports init_ports: ; Init MCU ports
@ -116,17 +138,17 @@ ldi r18, outer_count
ldi r18, outer_count ldi r18, outer_count
ret ret
delay_100ms: delay_50ms:
push r18 push r18
push r19 push r19
ldi r18, 130 ; 1c ldi r18, 65 ; 1c
ldi r19, 222 ; 1c ldi r19, 239 ; 1c
_loop_d_100ms: _loop_d_50ms:
dec r19 ; 1c dec r19 ; 1c
brne _loop_d_100ms ; 2 or 1c = 665c brne _loop_d_50ms ; 2 or 1c = 665c
dec r18 ; 1c dec r18 ; 1c
brne _loop_d_100ms ; 2 or 1c brne _loop_d_50ms ; 2 or 1c
nop nop
pop r19 pop r19
pop r18 pop r18

View File

@ -1,12 +1,14 @@
:020000020000FC :020000020000FC
:100000000FED0DBF15D001D0FECF1F932F933F935F :100000000FED0DBF25D001D0FECF1F932F933F934F
:1000100011EF1BBB1ED011E033E020EF110F210FB9 :100010004F934BB311EF1BBB2CD011E033E020EF1B
:100020002BBB17D03A95C9F71F912F913F91089597 :10002000110F210F2BBB25D03A95C9F718EF1BBB39
:100030000FE00ABB02950BBBBA9AC298002708953D :1000300020D018EF33E020EF1695211B2BBB19D0F1
:1000400024E683EC99E00197F1F72A95D1F724E6AD :100040003A95C9F74BBB1F912F913F914F9108955E
:1000500008952F933F9322E83EED3A95F1F72A95C4 :100050000FE00ABB02950BBBBA9AC298002708951D
:10006000E1F700003F912F9108954D656D6F727912 :1000600024E683EC99E00197F1F72A95D1F724E68D
:10007000206C65642067616D652E20577269747409 :1000700008952F933F9321E43FEE3A95F1F72A95A7
:10008000656E2062792053657267657920596172C7 :10008000E1F700003F912F9108954D656D6F7279F2
:0E0090006B6F762032372E30392E32303231FF :10009000206C65642067616D652E205772697474E9
:1000A000656E2062792053657267657920596172A7
:0E00B0006B6F762032372E30392E32303231DF
:00000001FF :00000001FF