Forum: Mikrocontroller und Digitale Elektronik Problem mit Ausdruck


von Uwe K. (alfa-uwek)


Lesenswert?

Hallo Leute

ich habe ein Problem mit folgendem Ausdruck könnt ihr mir hier 
weiterhelfen
ich bekomme einfach kein gültiges Ergebniss
if 
(((!PINB&(1<<PINB0))&&(PINB&(1<<PINB1))&&(!PINB&(1<<PINB2))&(stellmin2== 
0))

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

...)&(stellmin2==0))

Da gehört wohl ein "&&" hin.

Außerdem hast du da 9x "(" und nur 8x ")" stehen.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Nachtrag:

So eine Frage gehört nicht nach "Projekte & Code" sondern nach "µC & 
Elektronik".

von Uwe K. (alfa-uwek)


Lesenswert?

Hallo Leute

ich habe ein Problem mit folgendem Ausdruck könnt ihr mir hier
weiterhelfen
ich bekomme einfach kein gültiges Ergebniss

if
(((!PINB&(1<<PINB0))&&(PINB&(1<<PINB1))&&(!PINB&(1<<PINB2))&&(stellmin2= 
=0)))

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Uwe K. schrieb:
1
if (((!PINB&(1<<PINB0))&&(PINB&(1<<PINB1))&&(!PINB&(1<<PINB2))&&(stellmin2==0)))

Hast du den geänderten Code denn wenigstens noch mal getestet?

Beitrag "Problem mit Ausdruck"

von Klaus R. (klaus2)


Lesenswert?

...auf welchem Drucker?

Klaus.

von g457 (Gast)


Lesenswert?

> So eine Frage gehört nicht nach "Projekte & Code" sondern nach "µC &
> Elektronik".

Nein, die gehört in die Kategorie 'How to write unmaintainable code'.

Nix für ungut.

von knapp (Gast)


Lesenswert?

g457 schrieb:
> 'How to write unmaintainable code'

Jepp, und hier zeigt sich, wie der Sch... mit (x << y) von der 
Problemstellung ablenkt.
ein wenig besser:
1
(((!PINB&BIT0)&&(PINB&BIT1)&&(!PINB&BIT2)&(stellmin2==0))
So springt der Fehler direkt ins Auge.

von Thomas E. (picalic)


Lesenswert?

Magnus M. schrieb:
> (!PINB&(1<<PINB0)

Ich würde sagen: entweder muss der logische NOT-Operator ("!") vor die 
Klammer, oder Du musst durch "~" bitweise invertieren: (~PINB&(1<<PINB0)

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> Magnus M. schrieb:
>> (!PINB&(1<<PINB0)
>
> Ich würde sagen: (...) oder Du musst

Warum bitte zitierst Du MICH?

von Thomas E. (picalic)


Lesenswert?

Magnus M. schrieb:
> Warum bitte zitierst Du MICH?

Sorry, ohne Absicht. Habe einfach nicht darauf geachtet, aus welchem 
Post ich den fehlerhaften Code zitiere...

von Wolfgang (Gast)


Lesenswert?

Uwe K. schrieb:
> ich bekomme einfach kein gültiges Ergebniss
>
> if
> (((!PINB&(1<<PINB0))&&(PINB&(1<<PINB1))&&(!PINB&(1<<PINB2))&&(stellmin2=
> =0)))

Setze einfach ein "//" davor. Dann fisst das der Compiler.
Oder hattest du an eine spezielle Funktionalität gedacht? Welche?

von Uwe K. (alfa-uwek)


Lesenswert?

Hallo

so ich habe den Code schon compeliert und der avr Studio 7 Simulator 
frisst den Code

allerdings habe ich keinen Zugang zu der IF Schleife
habe es mit

(((!PINB&(1<<PINB0))&&(PINB&(1<<PINB1))&&(!PINB&(1<<PINB2))&&(stellmin2= 
=0)))

oder mit

(((!PINB&(1<<PINB0))&&(PINB&(1<<PINB1))&&(!PINB&(1<<PINB2))&(stellmin2== 
0)))

probiert ich habe an einer anderen Stelle die Invertierung auch in den 
Klammern stehen da funktioniert das ganze nur hier hab ich keine Ahnung 
warum er das nicht so ausführt wie ich mir das wünsche

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Uwe K. schrieb:
> IF Schleife

Stell Dich in die Ecke und schäm Dich!


> habe es mit
...
> probiert ich habe an einer anderen Stelle die Invertierung auch in den
> Klammern stehen da funktioniert das ganze nur hier hab ich keine Ahnung
> warum er das nicht so ausführt wie ich mir das wünsche

Versuch es doch mal mit Thomas Vorschlag:

Thomas E. schrieb:
> Ich würde sagen: entweder muss der logische NOT-Operator ("!") vor die
> Klammer, oder Du musst durch "~" bitweise invertieren: (~PINB&(1<<PINB0)

von Thomas E. (picalic)


Lesenswert?

Uwe K. schrieb:
> probiert ich habe an einer anderen Stelle die Invertierung auch in den
> Klammern stehen da funktioniert das ganze nur hier hab ich keine Ahnung
> warum er das nicht so ausführt wie ich mir das wünsche

Vielleicht solltest Du erstmal nicht probieren, sondern Dich mit der 
Funktion des "!" und des "~"-Operators vertraut machen!
Logische (!) und bitweise (~) Invertierung ist nämlich nicht das 
Gleiche! Es kann aber sein, daß in bestimmten Spezialfällen zufällig das 
Richtige 'rauskommt, wenn man den falschen Operator anwendet.

Edit: Das gleiche gilt auch für "&" und "&&" - nicht herumprobieren, 
sondern verstehen, worin der Unterschied liegt!

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.