Gast
#161952
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
|
Anzeige
|
PORTD = 0b11111111; geht nicht
Gast
#161952
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
Gast
#161953
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
Gast
#161954
Schade, bei den PICs mit dem Hitech Compiler klappts. gerd
Gast
#161955
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.
Gast
#161956
makros dürfen allerdings nicht mit ziffern beginnen, somit funktionieren diese definitionen mit sicherheit nicht.
Gast
#161957
Korrekt. In dem Fall müsstest du die führende Null weglassen oder durch O ersetzen.
Gast
#161958
Bei CodeVision klapps jedenfalls. Das hat nichts mit der C Syntax zu tun. Es kommt lediglich auf den Compiler an.
Gast
#161959
> 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).
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|