Compare commits
2 Commits
24171244ff
...
74be66bfea
| Author | SHA1 | Date | |
|---|---|---|---|
|
74be66bfea
|
|||
|
a4b3a1f2ad
|
12
macros.inc
Normal file
12
macros.inc
Normal 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
|
||||||
|
|
||||||
29
main.asm
29
main.asm
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user