Forum: Mikrocontroller und Digitale Elektronik PORTD = 0b11111111; geht nicht


von Gerd (Gast)


Lesenswert?

mit dem IAR-Compiler Vers. 2.28 + ATMega8
möchte ich gerne dem PortD den Wert "0b11111111"
zuweisen und zwar mit PORTD = 0b11111111;

dies meckert der Compiler aber an

von peter dannegger (Gast)


Lesenswert?

Wenn es ein C-Compiler ist:

PORTD = 0b11111111;

ist keine gültige C-Syntax.

C kennt nur Dezimal-, Oktal- oder Hexadezimalzahlen, also:

PORTD = 255;

PORTD = 0377;

PORTD = 0xFF;


Peter

von Gerd (Gast)


Lesenswert?

Schade, bei den PICs mit dem Hitech Compiler klappts.

gerd

von Christian Schifferle (Gast)


Lesenswert?

An anderer Stelle im Forum wurde das Thema auch schon behandelt.
Der Hitech-Compiler wird irgendwo in den Tiefen ein Headerfile
einbinden, in welchem die binären Werte als Defines eingebunden werden,
also z.B:

#define 0b00000000 0x00
#define 0B00000000 0x00
#define 0b00000001 0x01
#define 0B00000001 0x01
#define 0b00000002 0x02
#define 0B00000002 0x02
...
...
#define 0b11111111 0xff
#define 0B11111111 0xff

Alles andere würde jeder C-Spezifikation widersprechen.

von rastlos ratlos (Gast)


Lesenswert?

makros dürfen allerdings nicht mit ziffern beginnen, somit funktionieren
diese definitionen mit sicherheit nicht.

von Christian Schifferle (Gast)


Lesenswert?

Korrekt.
In dem Fall müsstest du die führende Null weglassen oder durch O
ersetzen.

von Mr_Börtsch (Gast)


Lesenswert?

Bei CodeVision klapps jedenfalls.

Das hat nichts mit der C Syntax zu tun. Es kommt lediglich auf den
Compiler an.

von ---- (Gast)


Lesenswert?

> Das hat nichts mit der C Syntax zu tun.
Doch - es widerspricht ihr! Deshalb muss das (wie oben beschrieben)
'umständlich' nachgerüstet werden, oder aber der Compilerbauen geht
seinen eigenen (nicht konformen) Weg.

----, (QuadDash).

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.