Forum: Mikrocontroller und Digitale Elektronik Große Tabelle ".db" (Assembler)


von Bernhard (Gast)


Lesenswert?

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

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

so?

SINUS_WERTE:
.db 127,128,129,... ,0
.db 127,126,125,... ,0
.db 127,126,125,... ,0
.db 127,126,125,... ,0
.db 127,126,125,... ,0

oder versteh ich das Problem jetzt gerade nicht?

Matthias

von Carsten Steiner (Gast)


Lesenswert?

Würde ich auch so machen, lass einfach die weiteren Labels weg!

Carsten

von Andi K. (Gast)


Lesenswert?

Allerdings nicht im SRAM sondern im Flash-RAM.
Zugriff erfolgt dann mittels LPM über das Z-Register.

MfG
Andi

von Hannes L. (hannes)


Lesenswert?

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.

...

von Bernhard (Gast)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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...

;-)

...

von Bernhard (Gast)


Lesenswert?

@HanneS

...stimmt, für den Befehl "LPM" kann natürlich nur das Z-Register
verwendet werden...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.