;###Created by Alexander Haas, Alexander Hunt und Tim Weidner

.include "2313def.inc"

.def aussen=R24
.def innen=R25
.def wtmp=R26

.equ clk = 4000

reset:
    ldi R16, low(RAMEND)
    out SPL,R16             ;Stackpointer initialisieren
    ldi R16, 0xEF           ;Startpunkt setzen
    ldi R17, 0xFF           
    out PORTB, R16          ;Startpunkt laden
    out DDRB, R17           ;PORTB als Ausgang setzen
links:
    cpi R16, 0x7F           ;Test ob LED ganz links leuchtet
    breq rechts
    lsl R16                 ;LED nach links
    inc R16                 ;erste LED aus
    out PORTB, R16          ;ausgeben
    rcall warte100ms        ;warten
    rjmp links              ;Schleife
rechts:
    cpi R16, 0xFE           ;Test ob LED ganz rechts leuchtet
    breq links
    lsr R16                 ;LED nach rechts
    ori R16,0x80            ;letzte LED aus
    out PORTB, R16          ;Ausgeben
    rcall warte100ms        ;
    rjmp rechts             ;Schleife

warte100ms:
    ldi wtmp, 10
w50loop:
    rcall warte10ms
    dec wtmp
    brne w50loop
    ret

warte10ms:
    ldi aussen,40
loop_aussen:
    ldi innen,250
loop_innen:
    dec innen
    nop
    brne loop_innen
    dec aussen
    brne loop_aussen
    ret