www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tabellen und Register


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Bin Neuling im Bereich µC's. Ich möchte in Abhängigkeit von 
Registerwerten entsprechende Unterprogramme aufrufen.

Wie lässt sich so etwas realisiern?
Mit Tabellen?

Danke im Vorraus

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es wäre äußerst hilfreich, wenn Du auch schreiben würdest, mit welchen 
Controllern Du Dich beschäftigen möchtest. Da gibts nämlich 
Unterschiede.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

in C kann man hervorragend mit Zeigern auf Funktionen arbeiten. Ich 
vermute aber, dass du in Assembler programmieren möchtest, richtig?

Gruß
Olaf

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ihr beiden,

ich möchtte in Assembler programmieren und verwende den 8515

Martin

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibts den Befehl "ijmp". Er benutzt R30/R31 (also das Z-Register) als 
Sprungadresse. Dieses Registerpaar vorher evtl. per Tabelle und 
"lpm"-Befehl definieren.
Beim lpm-Befehl bin ich mir allerdings nicht ganz sicher - ich progge 
nur die kleineren Atmels, aber der 8515 sollte ähnlich funktionieren.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann sieh die mal die Befehle ijmp/icall an. Damit läßt sich das sehr 
schön lösen.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe diese Befehle mal unter die lupe genommen.
Allerdings müßte ich dann jedes mal das Register abfragen und je nach 
dem den Z-Pointer laden.

gibt es da noch eine kürzere bzw. günstigere Variante?

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Wertebereich hast Du in dem Register?
Sind es fortlaufende Zahlen (also 0,1,2,3,4...) oder sind sie 
durcheinander?
Bei ersterer Möglichkeit kannst Du das Register als Zeiger auf eine 
Tabelle benutzen und mit dem Tabellenwert das Z-Register laden. Ist ein 
10-Zeiler. Es gibt nur einige Details, die ich von hier aus nicht 
checken kann.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bei einem interrupt wird ein register fortlaufend um 1 erhöht, 
jedoch maximal bis 9.

Ok danke für den Tipp, allerdings habe ich sehr wenig Erfahrung im 
Umgang mit Z-Pointer und Tabellen.

Martin

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.