; *** Lauflicht 1.0 (c) Oliver Mezger 4.3.2010 .include "2313def.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,0b11111110 ;LED0 an out PORTB,tmp ldi tmp, 0xff ;PB auf Ausgang out DDRB,tmp loop: in tmp,PORTB ;laden von PORTB lsl tmp ;eine Stelle nach Links inc tmp ;addiere 1 cpi tmp,$FF ;vergleiche mit 0b11111111 brne weiter ;wenn noch LED an, dann weiter ldi tmp,$FE ;sonst LED0 an weiter: out PORTB,tmp ;ausgeben PORTB rcall warte100ms ;Unterprogrammaufruf warten rjmp loop warte100ms: ;Unterprogramm 100ms Warten ldi wtmp, 10 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