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...
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
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.
Hi, das mit dem Macro find ich ja stark! Wieder was gelernt, Danke! MfG AVRli...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.