;****** PunktMatrix 1.0 (c) Oliver Mezger 6.7.2009
; Balken wandert von Spalte 1 bis Spalte 5

.include "m16def.inc"

.def tmp = R16		;tmp-Register zum Arbeiten
.def tmp2 = R17
.def spalte = R18	;Spalte für Darstellung

	jmp reset		;Einsprung nach Reset
	.org $2a		;folgender Code ab Adresse $2a
reset:
	ldi tmp,high(RAMEND);Oberste RAM-Adresse holen
	out	SPH, tmp		;Stack-Pointer initialisieren
	ldi tmp,low(RAMEND)	
	out	SPL, tmp
	ldi tmp,$ff
	out DDRA,tmp	;PA als Ausgang
	out DDRC,tmp	;PC als Ausgang
	ldi spalte,1	;Spalte initialisieren	
	out PORTA,tmp	;alle ZeilenLED an
loop:
	out PORTC,spalte;Spalte einschalten
	rol spalte		;naechste Spalte
	sbrc spalte,5	;wenn Spalte 6
	ldi spalte,1	;dann wieder Spalte 1
	rcall wait		;warte zum Anzeigen
	rjmp loop

wait:
	ldi tmp,100		;aeusseren Zaehler laden 100 ms
wl1:
	ldi tmp2,250	;inneren Zaehler 1ms bei 1Mhz
wl2:
	nop
	dec tmp2		;tmp2--
	brne wl2		;Sprung wenn nicht null
	dec tmp			;tmp--
	brne wl1		;Sprung wenn nicht null
	ret
