Hallöchen,
eine große Tabelle (800 Werte) für eine Sinus-Darstellung
möchte ich im SRAM hinterlegen.
Momentan habe ich das Problem so gelöst (mit Teilung der Tabelle):
SINUS_WERTE_TEIL_1:
.db 127,128,129,... ,0
SINUS_WERTE_TEIL_2:
.db 127,126,125,... ,0
Nun meine Frage an Euch. Gibt es eine bessere Möglichkeit, die 800
Werte zu hinterlegen, ohne die Tabelle zu teilen? Denn die Zeilenlänge
ist leider begrenzt.
Danke
Bernhard
Wenn du darauf achtest, dass die Anzahl der Einträge pro Zeile
geradzahlig ist, dann geht das auch ohne jede Zeile mit 0
abzuschließen. Der Abschluss mit 0 ist eigentlich nur für Strings
(Endekennung) erforderlich. Die 0 wird aber vom AVR-Assembler
automatisch hinzugefügt, falls die Anzahl der Bytes ungeradzahlig ist.
Ich mache öfters mal große Tabellen auf diese Art (8 oder 16 Bytes pro
Zeile), wobei der ASM-Quelltext (der Tabelle) oft von VB6-Programmen
generiert wird.
...
Danke für Eure Tipps.
Hab's gerade mal getestet, funktioniert wunderbar.
Und so sieht es jetzt aus:
SINUS_WERTE:
.db 127,128,129,... <Anzahl muss geradzahlig sein !!
.db 127,126,125,... ,0
Der Zugriff erfolgt dann mittels LPM über X, Y oder Z-Register.
Danke nochmals und schönes WE
Gruß
Bernhard
PS: Ich generiere auch gerne den Tabellen-Code in VBA,
spart bei großen Tabellen viel Zeit
Die Abschluss-0 brauchst du nur bei Texten, deren Ende an der 0 erkannt
wird. Bei deiner Sinustabelle bestimmt doch der Pointer den
"Zählumfang", da wird keine Ende-Kennung benötigt.
Nunja, für VBA bin ich zu blöd, ich nutze VB6 oder auch mal das gute
alte QBASIC (QB 4.5)...
Mir ist aber neu dass LPM mit X und Y auch geht. Ich mach' das immer
nur mit Z...
;-)
...