Indirekte Sprünge mit 8051

Gast #577184
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

?
Gast #577198
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.
Gast #577411
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)
Persönliche Seite #577609
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.