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

@ -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

View File

@ -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