Indirekte Sprünge mit 8051

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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.