Forum: Mikrocontroller und Digitale Elektronik AVR Assembler - variable Portzuweisung mit .def


von Jobst M. (jobstens-de)


Lesenswert?

Moin Gemeinde! :-)

Ich bewege mich ja nicht so häufig in AVR-Asm und habe damit ein kleines 
Problemchen:

Ich möchte Ports variabel definieren, damit ich bei einem Layoutredesign 
nicht das komplette Programm umschreiben muss.

Etwa so ... dachte ich - funktioniert so aber nicht
1
.def xyz = PORTD, 5
2
3
sbi  xyz

Jemand eine Idee?
Er motzt an dem Komma herum und das dort Müll am Zeilenende ist.
Gänsefüsschen und Escapen (Backslash) bringt nix ...
1
.def xyz_port = PORTD
2
.def xyz_pin = 5
3
4
sbi  xyz_port, xyz_pin

... bringt auch nichts ... (Er motzt sogar noch bei den Zuweisungen 
herum)


:-/


Gruß

Jobst

von Floh (Gast)


Lesenswert?

.def gilt nur für Register.
.equ ist für Zahlenwerte, Adressen usw gedacht, also auch für die PORTs 
(ist ja auch nur ne symbolische Adresse).

Ein Tip fürs nächste mal, schau einfach mal die "*def.inc" an, die du 
einbindest. Da sind die ganzen Ports definiert. :-)

von Jobst M. (jobstens-de)


Lesenswert?

  *Kopfschüttel* - Natürlich ...
1
.equ xyz_port = PORTD
2
.equ xyz_pin = 5
3
4
sbi  xyz_port, xyz_pin
... tut's


Das PORTD nur für eine IO-Adresse steht ist mir schon klar ;-)

Aber einzeilig geht's nicht ... :-/


Hmmm ... Macros fallen mir gerade noch ein ...



Gruß

Jobst

von wewede (Gast)


Lesenswert?

meine das ging so bin mir aber grad nicht sicher, lang kein asm mehr 
gemacht...
.equ xyz_pin = pind5

von Jobst M. (jobstens-de)


Lesenswert?

wewede schrieb:
> meine das ging so bin mir aber grad nicht sicher, lang kein asm mehr
> gemacht...
> .equ xyz_pin = pind5

Nö, funktioniert nicht ...
Zwar beschwert er sich hier nicht, dafür dann aber in der Zeile
1
sbi xyz_pin


Vielen Dank

Jobst

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.