Compare commits

..

3 Commits

3 changed files with 51 additions and 24 deletions

View File

@@ -1,5 +1,5 @@
#!/bin/sh
# Build & Flash
avra main.asm && avrdude -p m328p -c arduino -b 115200 -P /dev/tty.usbserial-A50285BI -U flash:w:main.hex
avra main.asm && avrdude -p m328p -c arduino -b 115200 -P /dev/tty.usbserial-110 -U flash:w:main.hex

View File

@@ -4,17 +4,19 @@
.macro left_to_right
in @0, PORTD
rol @0
brcc PC+2
ldi @0, 0b00000001
out PORTD, @0
.endmacro
.macro right_to_left
in @0, PORTD
clc
ror @0
brcc PC+2
ldi @0, 0b10000000
out PORTD, @0
.endmacro
.macro right_to_left
in @0, PORTD
clc
rol @0
brcc PC+2
ldi @0, 0b00000001
out PORTD, @0
.endmacro

View File

@@ -7,16 +7,17 @@
.include "./m328Pdef.inc"
.list
.def setter = R16
.def overflows = R17
.def active_led = R18
.def btn_status = R19
.def cur_direction = R20
.def setter = R16
.def overflows = R17
.def active_led = R18
.def btn_status = R19
.def cur_direction = R20
.equ L2R = 0x01
.equ R2L = 0b00000100
.equ R2L = 0x04
.equ RBTN_PRESSED = 0b00000100
.equ LBTN_PRESSED = 0b00000001
.equ BOTH_PRESSED = 0b00000101
.org 0x0000
rjmp init
@@ -38,8 +39,8 @@ init:
; ldi setter, 0b11111010
ser setter
out DDRB, setter ; PB0 und PB2 als Inputs definieren
; ldi setter, 0b00000101
; out PORTB, setter ; Interne Pullups aktivieren
ldi setter, 0b00000101
out PORTB, setter ; Interne Pullups aktivieren
clr setter
out PORTB, setter
@@ -93,17 +94,41 @@ overflow_handler:
; Setze definierten Start für den
; Laufrichtungswechsel
;----
cpi btn_status, LBTN_PRESSED
brne PC+3
ldi setter, 0b10000000
check_left_btn:
cpi btn_status, LBTN_PRESSED
brne check_right_btn
; Linker Button wurde gedrückt
ldi cur_direction, L2R
in setter, PORTD
cpi setter, 0
brne run_animation
cpi btn_status, RBTN_PRESSED
brne PC+3
; Lauflicht wurde zuvor gestopped und muss neu initialisiert werden
ldi setter, 0b00000001
ldi cur_direction, R2L
out PORTD, setter
rjmp run_animation
out PORTD, setter
check_right_btn:
cpi btn_status, RBTN_PRESSED
brne check_both_btn
; Rechter Button wurde gedrückt
ldi cur_direction, R2L
in setter, PORTD
cpi setter, 0
brne run_animation
; Lauflicht wurde zuvor gestopped und muss neu initialisiert werden
ldi setter, 0b10000000
out PORTD, setter
rjmp run_animation
check_both_btn:
cpi btn_status, BOTH_PRESSED
brne run_animation
ldi setter, 0
out PORTD, setter
;------
run_animation: