Forum: Mikrocontroller und Digitale Elektronik Einfacherer Zugriff auf Doppelbyte im RAM ???


von AVRli (Gast)


Lesenswert?

Hallo zusammen,

ich habe einen ersten Teil meines Programmes fertig, bevor ich weiter
mache möchte ich den Code etwas optimieren.
Was mich immer wieder etwas aufwendig erscheint ist der Zugriff auch
ein Doppelbyte im RAM.

Ich habe mal ein Beispiel angefügt wie ich es mache,


POS_BRH:  .Byte 1
POS_BRL:  .Byte 1

ldi XL,low(ramBR)
sts POS_BRL,XL
ldi XH,high(ramBR)
sts posBRH,XH


es geht, nur geht es auch leichter? Man kann ja auch 2 Byte
definieren.

Ich arbeite mit dem ATmega128.

MfG AVRli...

von Läubi (Gast)


Lesenswert?

POS .Byte2
ldi ZL, low(POS)
ldi ZH, high(POS)
st Z+, low(ramBR)
st Z, high(ramBR)

Müßte mein ich noch gehen.
hat aber vermutlich auch nicht weniger Takte als das was du im Momment
verwendest

von D. W. (dave) Benutzerseite


Lesenswert?

Man kann keine Konstanten direkt in den RAM speichern.

Du könntest aber einfach nen Macro machen.

.dseg
POS: .Byte 2

.cseg

.equ ramBR = 123


.macro STSW
  ldi r16, low(@0)
  sts @1, r16
  ldi r16, high(@0)
  sts @1+1, r16
.endmacro


  STSW POS, ramBR

Hbs kurz im AVR-Studio kompilieren lassen, funktioniert wohl.

von AVRli (Gast)


Lesenswert?

Hi,

das mit dem Macro find ich ja stark!
Wieder was gelernt, Danke!

MfG AVRli...

von Wolfgang (Gast)


Lesenswert?

Hallo,

"STSW POS, ramBR"

Nur sollte der Macroaufruf mit vertauschten Parametern erfolgen:

STSW ramBR, POS

Gruß

Wolfgang
--
www.ibweinmann.de

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.