Hier kommt die Aufgabe!
Seit bitte nicht zu geschockt, es ist nicht ganz leicht, aber Sebastian und ich werden euch langsam darauf hinzuführen!

Wir haben als nächstes vor, ein Soundmodul zu programmieren.
Wir werden einfach eine C-Dur-Tonleiter *für die Musiker unter uns* einmal rauf und einmal runter spielen.
Die Frequenzen findet ihr hier:
http://www.pianotip.de/frequenz.htm
Wir werden ersteinmal bei dem c' mit 261,63 Hz anfangen, über den Kammerton a' 440,00 Hz bis hin zum c'' 523,25 Hz.
Die Halbtonschritte lassen wir im ersten Teil weg, ich will euch ja nicht mit der Musiktheorie überfordern! ;o)

Damit wir nun nicht alle Töne einzeln mit großem Aufwand programmieren müssen, werden wir die Werte für die Töne im Speicher des AVR's ablegen.
Das machen mir mit den so genannten Direktiven .DW oder .DB!
Ich persönlich mache es gerne, dass ich die Daten ganz an's Ende des Codes lege.
Das sieht dann folgendermaßen aus:
Code:
.include "m8def.inc"
.
.
.
main:
   ...

subroutienen:
   ...

daten1:
.dw 65535 , 0 ; zwei sogenannte Words

daten2:
.db "Hallo!" , 10 , 13 ; immer eine gerade Anzahl an Bytes
Wenn man nun die Daten auslesen möchte, muss man das mit Hilfe des Z-Registers und des Befehls lpm machen.
Lest euch das bitte durch: http://www.avr-asm-tutorial.net/avr_...ner/index.html

Mit Hilfe des Z-Registers, welches ein 16-Bit-Register ist, legen wir die Position des Zeigers im Speicher fest.
An der Position wird dann mit lpm das Byte ausgelesen und in das Register 0 geschoben. Das können wir dann auslesen.

Schreibt jetzt bitte einen Code, der mit Hilfe des AVR-Speichers in r16 (temp) den Text "Hallo!" ausgibt. Ganz wichtig ist immer, dass ihr eine gerade Anzahl an Bytes benutzt, das hängt mit der Speicherstruktur zusammen.

So weit, so mehr oder weniger gut! ;o)
ich hoffe ihr habt wenigstens etwas verstanden, was ich von euch verlange! *g -> schäm für diesen unverständlichen Post*

Wenn ihr Fragen habt, dann fragt!
Viel Erfolg!