kann mir jemand " #$0001,X:GPIOA_PEREN" erklären

Gast #700030
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
Persönliche Seite #700118
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.
Persönliche Seite #700191
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren