Forum: Mikrocontroller und Digitale Elektronik Tabellen und Register


von Martin (Gast)


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

von thkais (Gast)


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.

von Olaf (Gast)


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

von Martin (Gast)


Lesenswert?

also ihr beiden,

ich möchtte in Assembler programmieren und verwende den 8515

Martin

von thkais (Gast)


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.

von crazy horse (Gast)


Lesenswert?

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

von Martin (Gast)


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?

von thkais (Gast)


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.

von Martin (Gast)


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

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.