Schließe Übungsziele der Stage 3 ab
This commit is contained in:
@@ -12,10 +12,10 @@
|
|||||||
|
|
||||||
## Stage 3:
|
## Stage 3:
|
||||||
|
|
||||||
- [ ] Richtungswechsel via Taster Klick
|
- [x] Richtungswechsel via Taster Klick
|
||||||
- [ ] Animation läuft unbeirrt weiter bei Taster-Klick
|
- [x] Animation läuft unbeirrt weiter bei Taster-Klick
|
||||||
- [ ] Wechsel von L2R auf R2L bei Taster-Links-Klick
|
- [x] Wechsel von L2R auf R2L bei Taster-Links-Klick
|
||||||
- [ ] Wechsel von R2L auf L2R bei Taster-Rechts-Klick
|
- [x] Wechsel von R2L auf L2R bei Taster-Rechts-Klick
|
||||||
|
|
||||||
## Stage 4:
|
## Stage 4:
|
||||||
|
|
||||||
|
|||||||
79
main.asm
79
main.asm
@@ -71,15 +71,23 @@ loop:
|
|||||||
overflow_handler:
|
overflow_handler:
|
||||||
inc overflows
|
inc overflows
|
||||||
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 ret_overflow_handler ; early Return wenn Schwellenwert noch nicht erreicht
|
brne early_exit ; early Return wenn Schwellenwert noch nicht erreicht
|
||||||
clr overflows ; Überlaufzähler kontrolliert zurücksetzen
|
clr overflows ; Überlaufzähler kontrolliert zurücksetzen
|
||||||
in btn_status, PINB
|
in btn_status, PINB ; Aktuellen Button Zustand einlesen
|
||||||
|
|
||||||
|
;--
|
||||||
|
; Geh direkt zur Animationslogik wenn
|
||||||
|
; kein Button gedrückt
|
||||||
|
; oder
|
||||||
|
; wenn der gedrückt Button dem der aktuellen
|
||||||
|
; Animation entspricht
|
||||||
|
;----
|
||||||
cpi btn_status, 0
|
cpi btn_status, 0
|
||||||
breq run_animation
|
breq run_animation ; kein Button gedrückt
|
||||||
|
|
||||||
cp cur_direction, btn_status
|
cp cur_direction, btn_status
|
||||||
breq run_animation
|
breq run_animation ; Animation bildet aktuellen Button-Status bereit ab
|
||||||
|
;------
|
||||||
|
|
||||||
;--
|
;--
|
||||||
; Setze definierten Start für den
|
; Setze definierten Start für den
|
||||||
@@ -96,70 +104,25 @@ overflow_handler:
|
|||||||
ldi cur_direction, R2L
|
ldi cur_direction, R2L
|
||||||
|
|
||||||
out PORTD, setter
|
out PORTD, setter
|
||||||
; mov cur_direction, btn_status
|
|
||||||
; ldi setter, 0b10000000
|
|
||||||
; cpi btn_status, RBTN_PRESSED
|
|
||||||
; breq PC+2
|
|
||||||
; ldi setter, 0b00000001
|
|
||||||
; out PORTD, setter
|
|
||||||
;------
|
;------
|
||||||
|
|
||||||
run_animation:
|
run_animation:
|
||||||
cpi cur_direction, L2R
|
cpi cur_direction, L2R
|
||||||
brne PC+3
|
brne check_r2l
|
||||||
left_to_right active_led
|
left_to_right active_led
|
||||||
reti
|
reti
|
||||||
|
|
||||||
|
check_r2l:
|
||||||
cpi cur_direction, R2L
|
cpi cur_direction, R2L
|
||||||
brne PC+3
|
brne show_err_code
|
||||||
right_to_left active_led
|
right_to_left active_led
|
||||||
reti
|
reti
|
||||||
|
|
||||||
ldi setter, 0b00011000
|
early_exit:
|
||||||
out PORTD, setter
|
reti
|
||||||
|
|
||||||
;====================
|
show_err_code:
|
||||||
|
ldi setter, 0b00011000
|
||||||
; cpi btn_status, R2L_PRESSED
|
out PORTD, setter
|
||||||
; brne PC+3
|
|
||||||
; ldi active_led, 0b00000001
|
|
||||||
; right_to_left active_led
|
|
||||||
;
|
|
||||||
; cpi btn_status, R2L_PRESSED
|
|
||||||
; brne PC+3
|
|
||||||
; ldi active_led, 0b10000000
|
|
||||||
; left_to_right active_led
|
|
||||||
;
|
|
||||||
; cpi btn_status, 0xFF
|
|
||||||
; brne PC+3
|
|
||||||
; ldi active_led, 0b00000001
|
|
||||||
; left_to_right active_led
|
|
||||||
|
|
||||||
;====================
|
|
||||||
|
|
||||||
; cpi btn_status, 0x00
|
|
||||||
; brne PC+4
|
|
||||||
; ldi setter, 0b10101010
|
|
||||||
; out PORTD, setter
|
|
||||||
; rjmp ret_overflow_handler
|
|
||||||
;
|
|
||||||
; cpi btn_status, RBTN_PRESSED
|
|
||||||
; brne PC+5
|
|
||||||
; ldi setter, 0b00000001
|
|
||||||
; out PORTD
|
|
||||||
; right_to_left active_led
|
|
||||||
; rjmp ret_overflow_handler
|
|
||||||
;
|
|
||||||
; cpi btn_status, LBTN_PRESSED
|
|
||||||
; brne PC+4
|
|
||||||
; ldi active_led, 0b00100000
|
|
||||||
; ; left_to_right active_led
|
|
||||||
; out PORTD, active_led
|
|
||||||
; rjmp ret_overflow_handler
|
|
||||||
;
|
|
||||||
; ser setter
|
|
||||||
; out PORTD, setter
|
|
||||||
|
|
||||||
ret_overflow_handler:
|
|
||||||
reti
|
reti
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user