Hallo Freunde Ich habe einen Problem und brauche dringend Hilfe, da ich leider allein nicht weitergekommen bin. ich habe einen kleinen Programm für mein atmega 64 geschrieben und versuche dies über den debugger zum laufen zu brigen, geht leider nicht. mein programm sollte so laufen. Die erste if schlöeife prüft ob alle eingäne in Port A eine 1 haben, und in der lzwiten if schleide wird geprüft, ob PA7 und PA6, PA5, PA4 high sind und die ändern low haben. leider geht der debugger nie in der ersten schleife rein sonden nimmt immer die Else. über den debugger versuche ich die den Zustand von PINA ( PORTA Data direction register den zustasnd zu ändern) was mache ich hier falsch, bitte um Hilfe (programm siehe Anhang)
Ja sorry das ist eine Anweisung, aber deine Antwort bringt auch keine Hilfr mit
Also ein bisschen Mühe beim Schreiben hättest du dir schon geben können. Ich find das irgendwie respektlos wenn man hier einfach nur irgendwie was hinschmiert und dann Hilfe erwartet. Nicht mal Tippfehler korrigierst du. In der ersten if steht, wie jemand schon festgestellt hat, ein =!, das macht keinen Sinn.
Paul Hamacher schrieb: > Also ein bisschen Mühe beim Schreiben hättest du dir schon geben > können. > Ich find das irgendwie respektlos wenn man hier einfach nur irgendwie > was hinschmiert und dann Hilfe erwartet. Nicht mal Tippfehler > korrigierst du. > > In der ersten if steht, wie jemand schon festgestellt hat, ein =!, das > macht keinen Sinn. Da gebe ich dir schon recht, aber mein Compiler zeigt garkein Fehler, deswegen bin ich darauf garnicht gekommen.
Man kann in C sehr viel falsch machen ohne dass der Compiler meckert ;) die doppelten Klammern in den if-Abfragen kannst du dir übrigens auch sparen, ist aber kein Fehler.
>Ja sorry das ist eine Anweisung Nö auch nicht. Und es bringt REIN GAR NICHTS bei solch einfachen Aufgaben nach der Lösung zu fragen, dann hängst du bei der nächsten Aufgabe wieder fest... Im übrigen hier kannst du anfangen nach Fehlern zu suchen: >Warum steht beim ersten IF "=!" und beim zweiten IF "!=" ? Gruß Jonas
Lisa schrieb: > Da gebe ich dir schon recht, aber mein Compiler zeigt garkein Fehler, > deswegen bin ich darauf garnicht gekommen. dann schalte alle Warnungen ein, dann sollte schon etwas kommen.
Peter II schrieb: > Lisa schrieb: >> Da gebe ich dir schon recht, aber mein Compiler zeigt garkein Fehler, >> deswegen bin ich darauf garnicht gekommen. > > dann schalte alle Warnungen ein, dann sollte schon etwas kommen. wie schalte ich alle Warnungen an?
=! ist eine zuweisung, damit weisst du den Wert nicht DiodeOkPortA dem
StatusPortA zu, da in einem if keine zuweisungen erlaubt sind sollte es
eine Warning geben und darum ist es nicht gegangen.
Der Befehl =! macht sinn wenn du in wie folgt anwendest.
bool y = false;
int x = 2;
if( x == 2)
{
y =! y
}
Damit setzt du y auf true.
Iich habe die von euch gefundene Fehler korrigiert jetzt läuft alles, aber wie kann ich alle Warnung einschalten, die antwort von Jörg habe ich leider nicht verstanden und die google Suche dazu ergab nicht
Rebi schrieb: > da in einem if keine zuweisungen erlaubt sind sollte es > eine Warning geben und darum ist es nicht gegangen. warum sollte das in C nicht erlaubt sein?
1 | if ( a=!b ) { |
2 | }
|
ist zu zulässig, und auch eventuell sogar sinnvoll.
Peter II schrieb: > ist zu zulässig, und auch eventuell sogar sinnvoll. In ihrem Fall ist es nicht sinnvoll da sie eine Bedingung will, habs ein bisschen komisch Formuliert. Für eine Bedingung ist es nicht erlaub, so meinte ich. Welches Studio verwendest du? Erscheinen die Warnings beim ersten mal und dann nicht mehr?
Rebi schrieb: > Peter II schrieb: >> ist zu zulässig, und auch eventuell sogar sinnvoll. > > In ihrem Fall ist es nicht sinnvoll da sie eine Bedingung will, habs ein > bisschen komisch Formuliert. Für eine Bedingung ist es nicht erlaub, so > meinte ich. Bitte verwende hier nicht die Phrase "nicht erlaubt". Das ist missverständlich. Denn syntaktisch ist an
1 | if( a =! b ) |
2 | ...
|
nichts auszusetzen. Es ist ein wenig seltsam formatiert. Geübtere Programmierer würden wahrscheinlich
1 | if( a = !b ) |
2 | ...
|
schreiben. Aber aus Sicht der C-Syntax ist da alles in Ordnung. Es ist erlaubt. Ob es das ist, was der Programmierer wollte, ist eine andere Frage. Das das nicht das ist, was Lisa eigentlich wollte, ist uns allen klar. Aber du machst es mit einem 'nicht erlaubt' nicht besser. Denn das suggeriert, dass hier eigentlich ein Syntaxfehler vorliegen würde, der vom Compiler nicht gemeldet wird. Und das stimmt ganz einfach nicht.
Paul Hamacher schrieb: > Man kann in C sehr viel falsch machen ohne dass der Compiler meckert ;) > die doppelten Klammern in den if-Abfragen kannst du dir übrigens auch > sparen, ist aber kein Fehler. Die doppelten Klammern sind genau der Grund, warum der gcc bei
1 | if( ( a =! b ) ) |
2 | ...
|
keine Zuweisungswarnung bringt. Sie signalisieren dem Compiler: Du ich wollte da wirklich eine Zuweisung machen. Würde man die doppelten Klammern rausnehmen, kommt auch die entsprechende Warnung.
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.