Schließe Übungsziele der Stage 3 ab
This commit is contained in:
@@ -12,10 +12,10 @@
|
||||
|
||||
## Stage 3:
|
||||
|
||||
- [ ] Richtungswechsel via Taster Klick
|
||||
- [ ] Animation läuft unbeirrt weiter bei Taster-Klick
|
||||
- [ ] Wechsel von L2R auf R2L bei Taster-Links-Klick
|
||||
- [ ] Wechsel von R2L auf L2R bei Taster-Rechts-Klick
|
||||
- [x] Richtungswechsel via Taster Klick
|
||||
- [x] Animation läuft unbeirrt weiter bei Taster-Klick
|
||||
- [x] Wechsel von L2R auf R2L bei Taster-Links-Klick
|
||||
- [x] Wechsel von R2L auf L2R bei Taster-Rechts-Klick
|
||||
|
||||
## Stage 4:
|
||||
|
||||
|
||||
79
main.asm
79
main.asm
@@ -71,15 +71,23 @@ loop:
|
||||
overflow_handler:
|
||||
inc overflows
|
||||
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
|
||||
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
|
||||
breq run_animation
|
||||
breq run_animation ; kein Button gedrückt
|
||||
|
||||
cp cur_direction, btn_status
|
||||
breq run_animation
|
||||
breq run_animation ; Animation bildet aktuellen Button-Status bereit ab
|
||||
;------
|
||||
|
||||
;--
|
||||
; Setze definierten Start für den
|
||||
@@ -96,70 +104,25 @@ overflow_handler:
|
||||
ldi cur_direction, R2L
|
||||
|
||||
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:
|
||||
cpi cur_direction, L2R
|
||||
brne PC+3
|
||||
brne check_r2l
|
||||
left_to_right active_led
|
||||
reti
|
||||
|
||||
check_r2l:
|
||||
cpi cur_direction, R2L
|
||||
brne PC+3
|
||||
brne show_err_code
|
||||
right_to_left active_led
|
||||
reti
|
||||
|
||||
ldi setter, 0b00011000
|
||||
out PORTD, setter
|
||||
|
||||
;====================
|
||||
|
||||
; cpi btn_status, R2L_PRESSED
|
||||
; 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:
|
||||
early_exit:
|
||||
reti
|
||||
|
||||
show_err_code:
|
||||
ldi setter, 0b00011000
|
||||
out PORTD, setter
|
||||
reti
|
||||
|
||||
|
||||
Reference in New Issue
Block a user