mikrocontroller.net

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


Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten Steiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde ich auch so machen, lass einfach die weiteren Labels weg!

Carsten

Autor: Andi K. (Gast)
Datum:

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

MfG
Andi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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...

;-)

...

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@HanneS

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.