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
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
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.
makros dürfen allerdings nicht mit ziffern beginnen, somit funktionieren diese definitionen mit sicherheit nicht.
Korrekt. In dem Fall müsstest du die führende Null weglassen oder durch O ersetzen.
Bei CodeVision klapps jedenfalls. Das hat nichts mit der C Syntax zu tun. Es kommt lediglich auf den Compiler an.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.