Forum: PC-Programmierung kann mir jemand " #$0001,X:GPIOA_PEREN" erklären


von Hakoo (Gast)


Lesenswert?

Hallo,

in C-Code steht folgende Zeile:

asm ( bfclr #$0001,X:GPIOA_PEREN );

was kann "#$0001,X:GPIOA_PEREN" bedeuten?

# steht für Bit
und
$ für Hex

und dann ist noch ein ":"

Was kann das alles bedeuten?

Könnte ich nicht das ganze in C schreiben und aus dieser Zeile:
GPIOA_PEREN=0x0001;
machen?

MFG
Hakoo

von Stefan B. (stefan) Benutzerseite


Lesenswert?

bfclr könnte für Freescale DSP sein. X: gibt dann an, dassa die Asresse 
symbolische Adresse GPIOA_PEREN im X Memory gemeint ist.

Was GPIOA_PEREN für eine reale Adresse ist, müsste in einem Includefile 
und/oder in einem Define definiert sein.

Die asm-Zeile allein macht wenig Sinn. Bei der Umsetzung nach C ist der 
Kontext (das drumherum) zu beachten.

Deine Idee mit GPIOA_PEREN=0x0001; ist IMHO nicht richtig; das testet ja 
nicht Bit0 (#$0001) und löscht es ja auch nicht.

von Hakoo (Gast)


Lesenswert?

@stefb
Danke für die Antwort.

#define GPIOA_BASE  0x00F150
#define GPIOA_PEREN   (GPIOA_BASE  + 0x3 ) //Peripheral Enable Register

so sieht DEFINE aus

Wofür steht IMHO?

und was bedeutet #$?

Danke

von tex (Gast)


Lesenswert?

IMHO in Deutsch  =  meiner bescheidenen Meinung nach

"
In meinem Technik-Säkulum, da schwafelt man nicht lang herum.
Ein Kürzel-Kauderwelsch ist Brauch, die Unart gab es früher auch.
"

von Stefan B. (stefan) Benutzerseite


Lesenswert?

IMHO
http://www.google.de/search?hl=de&q=imho&meta=

# ist der Immediate addressing mode operator, d.h. der darauf folgende 
Wert wird als direkte Adresse oder Konstante verwendet.

In obigem Fall ist der folgende Wert mit $ angegeben, d.h. es ist ein 
hexadezimaler Wert.

# im Sinn einer Adresse bei BFCLR ist etwas missverständlich. Hier ist 
einfach nur ein absoluter Wert (Konstante) als Operand gemeint, nämlich 
der Wert $0001, d.h. es soll Bit0 geprüft und gelöscht werden.

Der zweite Operand ist die Adresse, wo das passieren soll. Mit deinem 
Define ist die Adresse klar: 0x00F150+0x3 = 0x00F153

Die Erklärung müsstest su aber auch im Datenblatt von deinem µC finden. 
Die Dinger heissen "blablabla Reference Manual" oder "Assemlber 
Instruction Set" o.ä.. Auf lange Sicht unverzichtbar.

von Hakoo (Gast)


Lesenswert?

@ Stefan

Vielen Danke für die gute Erklärung.
Jetzt ist einiges klarer :-)

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.