Selber herrausfinden bringt wohl mehr, aber ich komm da ja nun gar nicht klar. Hier mal mein Code:
Code:
;Programm
;CDurTonleiter rauf und runter spielen
.include "m8def.inc"
.def tmp = r16 ;Mein Universallregister
.org 0x000
rjmp reset ;Interruptvektor "reset:"
reset:
;Stack einrichten
ldi tmp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
out SPH, tmp
ldi tmp, LOW(RAMEND) ;Low-Byte der obersten RAM-Adresse
out SPL, tmp
ldi ZH, HIGH(daten2 * 2)
ldi ZL, LOW(daten2 * 2)
lpm
sei ;Interrupts zulassen
loop:
adiw ZL,1
lpm
ST Z,tmp
rjmp loop ;immer wieder zu "loop:" springen
daten1:
.dw 65535 , 0 ;zwei Words
daten2:
.db "Hallo!" ;immer eine gerade Anzahl an Bytes
Wie man sieht, sieht man nichts *g*
Ich versteh das nicht mit dem Programmspeicher und dem Z-Register und dann muss ich das Z-Register um 1 erhöhen und wieder auslesen und und und...
Vor allem, wozu brauch ich unten zwei Labels mit daten?
Lesezeichen