Compare commits

...

2 Commits

Author SHA1 Message Date
74be66bfea Lagere Macros in eigene Datei aus 2025-05-31 23:06:44 +02:00
a4b3a1f2ad Stelle Lauflicht auf Rotate-Mechanismus um 2025-05-31 23:01:47 +02:00
2 changed files with 17 additions and 24 deletions

12
macros.inc Normal file
View File

@@ -0,0 +1,12 @@
;========
; Macros
;========
.macro left_to_right
in @0, PORTD
rol @0
brcc PC+2
ldi @0, 0b00000001
out PORTD, @0
.endmacro

View File

@@ -16,12 +16,7 @@
.org 0x0020 .org 0x0020
rjmp overflow_handler rjmp overflow_handler
.macro check_led .include "./macros.inc"
cpi active_led, @0
brne PC+3
ldi setter, (1<<@0)
out PORTD, setter
.endmacro
init: init:
;-- ;--
@@ -42,26 +37,15 @@ init:
;-- ;--
; Definiere Startzustand ; Definiere Startzustand
;---- ;----
ldi active_led, 0
ldi setter, 0 ldi setter, 0
out TCNT0, setter ; Timer/Counter explizit mit 0 initialisieren out TCNT0, setter ; Timer/Counter explizit mit 0 initialisieren
ldi setter, 0b00000001
out PORTD, setter
main: main:
clr setter
out PORTD, setter ; Alle LEDs erstmal aus
;-- ;--
; Schalte aktuell aktive LED gezielt wieder an ; Dreh Dräumchen und lass den Timer-Interrupt die Show leiten
;---- ;----
check_led 0
check_led 1
check_led 2
check_led 3
check_led 4
check_led 5
check_led 6
check_led 7
rjmp main rjmp main
overflow_handler: overflow_handler:
@@ -69,10 +53,7 @@ overflow_handler:
cpi overflows, 246 ; bei ~980 Überläufe/Sekunde entsprechen 245 Überläufe ca. 250ms cpi overflows, 246 ; bei ~980 Überläufe/Sekunde entsprechen 245 Überläufe ca. 250ms
brne overflow_handler_exit ; early Return wenn Schwellenwert noch nicht erreicht brne overflow_handler_exit ; early Return wenn Schwellenwert noch nicht erreicht
clr overflows ; Überlaufzähler kontrolliert zurücksetzen clr overflows ; Überlaufzähler kontrolliert zurücksetzen
inc active_led ; nächste LED aktivieren left_to_right active_led
cpi active_led, 8 ; prüfen ob LED-Zähler überzählt wurde
brne overflow_handler_exit ; early Return solange die aktive LED im erlaubten Bereich liegt
ldi active_led, 0 ; LED-Zähler kontrolliert zurücksetzen
overflow_handler_exit: overflow_handler_exit:
reti reti