; *** Blinklicht 1.1 (c) Oliver Mezger 21.2.2011

.include "tn2313def.inc"

.def tmp = R16      ;Temporaeres Register
.def innen = R20    ;Hilfsregister fuer Warteschleife
.def aussen = R21   ;Hilfsregister fuer Warteschleife
.def wtmp = R22     ;Hilfsregister fuer Warteschleife

.equ clk = 4    ;CPU-Takt in MHz

reset:
  ldi tmp, low(RAMEND) ;Stackpointer initialisieren
  out SPL,tmp
  ldi tmp, 0xff
  out PORTB,tmp     ;alle LED aus
  out DDRB,tmp      ;alles auf Ausgang
loop:
  cbi PORTB,1       ;LED1 an 
  rcall warte500ms  ;Unterprogrammaufruf
  sbi PORTB,1       ;LED1 aus
  rcall warte500ms
  rjmp loop

warte500ms:         ;Unterprogramm 500ms Warten
  ldi wtmp, 50
w50loop:
  rcall warte10ms
  dec wtmp
  brne w50loop
  ret

warte10ms:          ;Unterprogramm 10ms Warten
  ldi aussen,clk*10 ;anpassen an CPU-Takt
loop_aussen:
  ldi innen,250
loop_innen:
  nop
  dec innen
  brne loop_innen
  dec aussen
  brne loop_aussen
  ret