;****** 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 spalte1: ldi spalte,1 ;Spalte1 initialisieren ldi ZH, high(daten*2) ;Datenzeiger initialisieren ldi ZL, low(daten*2) nspalte: lpm tmp, z+ ;lade Daten aus Flash out PORTA,tmp ;ausgeben Spalte out PORTC,spalte;Spalte einschalten rcall wait ;warte zum Anzeigen rol spalte ;naechste Spalte sbrc spalte,5 ;wenn Spalte 6 rjmp spalte1 ;dann wieder Spalte 1 rjmp nspalte ;sonst naechste Spalte wait: ldi tmp,10 ;aeusseren Zaehler laden 10 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 daten: .db $08,$04,$7E,$04,$08