Compare commits
3 Commits
0d6d8dbd2a
...
89cb9a3464
| Author | SHA1 | Date | |
|---|---|---|---|
|
89cb9a3464
|
|||
|
204e94d613
|
|||
|
a30bf50f67
|
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Build & Flash
|
# 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
|
||||||
|
|
||||||
|
|||||||
18
macros.inc
18
macros.inc
@@ -4,17 +4,19 @@
|
|||||||
|
|
||||||
.macro left_to_right
|
.macro left_to_right
|
||||||
in @0, PORTD
|
in @0, PORTD
|
||||||
rol @0
|
clc
|
||||||
brcc PC+2
|
|
||||||
ldi @0, 0b00000001
|
|
||||||
out PORTD, @0
|
|
||||||
.endmacro
|
|
||||||
|
|
||||||
.macro right_to_left
|
|
||||||
in @0, PORTD
|
|
||||||
ror @0
|
ror @0
|
||||||
brcc PC+2
|
brcc PC+2
|
||||||
ldi @0, 0b10000000
|
ldi @0, 0b10000000
|
||||||
out PORTD, @0
|
out PORTD, @0
|
||||||
.endmacro
|
.endmacro
|
||||||
|
|
||||||
|
.macro right_to_left
|
||||||
|
in @0, PORTD
|
||||||
|
clc
|
||||||
|
rol @0
|
||||||
|
brcc PC+2
|
||||||
|
ldi @0, 0b00000001
|
||||||
|
out PORTD, @0
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|||||||
55
main.asm
55
main.asm
@@ -7,16 +7,17 @@
|
|||||||
.include "./m328Pdef.inc"
|
.include "./m328Pdef.inc"
|
||||||
.list
|
.list
|
||||||
|
|
||||||
.def setter = R16
|
.def setter = R16
|
||||||
.def overflows = R17
|
.def overflows = R17
|
||||||
.def active_led = R18
|
.def active_led = R18
|
||||||
.def btn_status = R19
|
.def btn_status = R19
|
||||||
.def cur_direction = R20
|
.def cur_direction = R20
|
||||||
|
|
||||||
.equ L2R = 0x01
|
.equ L2R = 0x01
|
||||||
.equ R2L = 0b00000100
|
.equ R2L = 0x04
|
||||||
.equ RBTN_PRESSED = 0b00000100
|
.equ RBTN_PRESSED = 0b00000100
|
||||||
.equ LBTN_PRESSED = 0b00000001
|
.equ LBTN_PRESSED = 0b00000001
|
||||||
|
.equ BOTH_PRESSED = 0b00000101
|
||||||
|
|
||||||
.org 0x0000
|
.org 0x0000
|
||||||
rjmp init
|
rjmp init
|
||||||
@@ -38,8 +39,8 @@ init:
|
|||||||
; ldi setter, 0b11111010
|
; ldi setter, 0b11111010
|
||||||
ser setter
|
ser setter
|
||||||
out DDRB, setter ; PB0 und PB2 als Inputs definieren
|
out DDRB, setter ; PB0 und PB2 als Inputs definieren
|
||||||
; ldi setter, 0b00000101
|
ldi setter, 0b00000101
|
||||||
; out PORTB, setter ; Interne Pullups aktivieren
|
out PORTB, setter ; Interne Pullups aktivieren
|
||||||
clr setter
|
clr setter
|
||||||
out PORTB, setter
|
out PORTB, setter
|
||||||
|
|
||||||
@@ -93,17 +94,41 @@ overflow_handler:
|
|||||||
; Setze definierten Start für den
|
; Setze definierten Start für den
|
||||||
; Laufrichtungswechsel
|
; Laufrichtungswechsel
|
||||||
;----
|
;----
|
||||||
cpi btn_status, LBTN_PRESSED
|
check_left_btn:
|
||||||
brne PC+3
|
cpi btn_status, LBTN_PRESSED
|
||||||
ldi setter, 0b10000000
|
brne check_right_btn
|
||||||
|
|
||||||
|
; Linker Button wurde gedrückt
|
||||||
ldi cur_direction, L2R
|
ldi cur_direction, L2R
|
||||||
|
in setter, PORTD
|
||||||
|
cpi setter, 0
|
||||||
|
brne run_animation
|
||||||
|
|
||||||
cpi btn_status, RBTN_PRESSED
|
; Lauflicht wurde zuvor gestopped und muss neu initialisiert werden
|
||||||
brne PC+3
|
|
||||||
ldi setter, 0b00000001
|
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:
|
run_animation:
|
||||||
|
|||||||
Reference in New Issue
Block a user