Schließe Etappenziel Stage 2, Punkt 1 ab
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
## Stage 2:
|
## Stage 2:
|
||||||
|
|
||||||
- [ ] Hardcodiertes Lauflicht L2R Richtung
|
- [x] Hardcodiertes Lauflicht L2R Richtung
|
||||||
- [ ] Hardcodiertes Lauflicht R2L Richtung
|
- [ ] Hardcodiertes Lauflicht R2L Richtung
|
||||||
|
|
||||||
## Stage 3:
|
## Stage 3:
|
||||||
|
|||||||
68
main.asm
68
main.asm
@@ -7,12 +7,72 @@
|
|||||||
.include "./m328Pdef.inc"
|
.include "./m328Pdef.inc"
|
||||||
.list
|
.list
|
||||||
|
|
||||||
|
.def setter = R16
|
||||||
|
.def overflows = R17
|
||||||
|
.def active_led = R18
|
||||||
|
|
||||||
.org 0x0000
|
.org 0x0000
|
||||||
rjmp init
|
rjmp init
|
||||||
|
.org 0x0020
|
||||||
|
rjmp overflow_handler
|
||||||
|
|
||||||
|
.macro check_led
|
||||||
|
cpi active_led, @0
|
||||||
|
brne PC+3
|
||||||
|
ldi setter, (1<<@0)
|
||||||
|
out PORTD, setter
|
||||||
|
.endmacro
|
||||||
|
|
||||||
init:
|
init:
|
||||||
ser R16
|
;--
|
||||||
out DDRD, R16
|
; Output Ports definieren
|
||||||
out PORTD, R16
|
;----
|
||||||
|
ser setter
|
||||||
|
out DDRD, setter ; Alle LEDs standardmäßig aus
|
||||||
|
|
||||||
|
;--
|
||||||
|
; Timer/Counter konfigurieren
|
||||||
|
;----
|
||||||
|
ldi setter, 0b00000011
|
||||||
|
out TCCR0B, setter ; CLK/1024 ergibt 250.000 Timer-Ticks/Sekunde
|
||||||
|
ldi setter, 0b00000001
|
||||||
|
sts TIMSK0, setter ; Timer-Interupt aktivieren
|
||||||
|
sei ; globale Interrups aktivieren
|
||||||
|
|
||||||
|
;--
|
||||||
|
; Definiere Startzustand
|
||||||
|
;----
|
||||||
|
ldi active_led, 0
|
||||||
|
ldi setter, 0
|
||||||
|
out TCNT0, setter ; Timer/Counter explizit mit 0 initialisieren
|
||||||
|
|
||||||
|
main:
|
||||||
|
clr setter
|
||||||
|
out PORTD, setter ; Alle LEDs erstmal aus
|
||||||
|
|
||||||
|
;--
|
||||||
|
; Schalte aktuell aktive LED gezielt wieder an
|
||||||
|
;----
|
||||||
|
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
|
||||||
|
|
||||||
|
overflow_handler:
|
||||||
|
inc overflows
|
||||||
|
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
|
||||||
|
clr overflows ; Überlaufzähler kontrolliert zurücksetzen
|
||||||
|
inc active_led ; nächste LED aktivieren
|
||||||
|
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:
|
||||||
|
reti
|
||||||
|
|
||||||
rjmp init
|
|
||||||
|
|||||||
Reference in New Issue
Block a user