www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Indirekte Sprünge mit 8051


Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe weder mit Google noch in meiner Sammlung etwas Brauchbares zu 
indirekten Sprüngen oder Lookup-Tabellen gefunden.

Kann mir jemand eine Adresse mit Beispielen geben?

Assembler, 8252

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sprünge: JMP @A+DPTR
Tables: MOVX

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A.K. wrote:

> Tables: MOVX

Nein, das ist MOVC


Peter

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe schon soviel rausgefunden:

MOVC A, @A+DPTR

Mit diesem Befehl wird der Wert eines Registers mit der Adresse "DPTR A" 
in den Accu verschoben.

Muss ich für die Angabe des Registers unbedingt den Accu benutzen, oder 
darf ich auch das schreiben:

MOVC A, @R0+DPTR

oder sogar

MOVC R1, @RO+DPTR

?

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke du suchst hiernach !?

mov dptr,#lookup_table
movc a,@a+dptr                  // hier steht H von Hello in a

lookup_table:    DB 'Hello'

Wenn du nun weiter inkrementierst dann kannst du den Ganzen Text 'Hello' 
herauslesen.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
a muß natürlich den Wert 0 haben...

Alles klar ?

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich muss etwas Ähnlichges machen. Anhand eines Wertes im Register 
ROTATION_SPEED (Bereich vin 10 bis 250) muss der Timer im 16-Bit-Modus 
auf bestimmte werte gesetzt werden. Genauer berechnet sich der Timerwert 
so:

Timer = 1 / (3 * 10^-6 * ROTATION_SPEED)

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder wäre es vielleicht einfacher, den Wert in Laufzeit zu berechnen?

Autor: Maxim S. (maxim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joe wrote:
> Ich denke du suchst hiernach !?
>
> mov dptr,#lookup_table
> movc a,@a+dptr                  // hier steht H von Hello in a
>
> lookup_table:    DB 'Hello'
>
> Wenn du nun weiter inkrementierst dann kannst du den Ganzen Text 'Hello'
> herauslesen.

Ich möchte das:

MOV  A, R0
MOV  DPTR, #TABELLE
JMP  @A+DPTR

;------------------------------------------

TABELE:  SJMP  VALUE0
         SJMP  VALUE1
         SJMP  VALUE2
         SJMP  VALUE3
  ...  ...
  ..  ..
  .  .

VALUE0:  MOV  SP_H,  #07h
         MOV  SP_L,  #01h
         SJMP ENDE

VALUE1:  MOV  SP_H,  #10h
         MOV  SP_L,  #02h
         SJMP ENDE

VALUE2:  MOV  SP_H,  #10h
         MOV  SP_L,  #51h
         SJMP ENDE

VALUE3:  MOV  SP_H,  #14h
         MOV  SP_L,  #01h
         SJMP ENDE

...
..
.

Dabei soll bei R0 = 0 nach VALUE0, bei R0 = 1 nach VALUE1 u.s.w 
gesprungen werden.


Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du an den Sprungzielen sowieso nur Register laden willst, wieso 
verwendest du dann nicht gleich ein normales Array?

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.