Quelltext bleibt immer stehen und geht nicht weiter

Gast #960190
Ich habe ein Problem der Quelltext bleibt immer an der stelle "1"

stehen und geht nicht weiter wenn ich das Programm in AVR studio 
laufenlassen möchte als Mikro. verwende ich einen atmega8.
brauch dringend HILFE
1
int main(void)
2
{
3
//lcd_init();            
4
//lcd_home();
5
DDRC  = 0x00;
6
PORTC = 0xff;
7
  
8
while(1)
9
{
10

11
  qwe = PINC;   // 1
12
if (qwe == 0b00000001);
13
{
14
//  lcd_string("1");  
15
}
16
....
17
}
Moderator (Firma: Titel) Persönliche Seite
Stefan Ernst wrote:
>> if (qwe == 0b00000001);
> Entferne das Semikolon.

Ja, aber mit
1
if (qwe == 0b00000001) /*nichts*/;
2
{
3
   lcd_string("1");  
4
}
dürfte er nicht stehenbleiben, sondern immer in die Klammer springen,
auch wenn z.B. qwe = 0x45 wäre. Dann führt er /nichts*/ eben nicht aus. 
Oder was übersehe ich?
Sorry, das war nicht als Antwort auf die eigentliche Frage gedacht, 
sondern als Zusatzhinweis. ;-)

Zur eigentlich Frage denke ich, dass die Zeile "qwe = PINC;" der einzige 
Inhalt der while-Schleife ist, weil der Rest wegoptimiert wurde. Der 
if-Block ist ja schon mal leer und wer weiß schon, was "...." ist. Dann 
scheint im Simulator die Ausführung an dieser Zeile hängenzubleiben, 
weil einfach nur immer wieder diese Zeile ausgeführt wird.
Moderator (Firma: Titel) Persönliche Seite
>ein "=" ist an dieser Stelle definitiv falsch
Aber das ist doch egal, denn
>>es geht
und was will man mehr?   ;-)

@ Frank
Ich habe ja auch schon mal aus Versehen eine Zuweisung (=) statt eines 
Vergleichs (==) in eine Abfrage gemacht, aber ich war hinterher nicht 
stolz drauf...

Mit einer Zuweisung (=) hier
:
if (qwe = 0b00000001)
{
   irgendwas();
:
wird "irgendwas" immer ausgeführt. Denn da wird qwe zuerst der Wert 1 
zugewiesen, und dann geprüft ob qwe Null ist. Ist es natürlich nicht, 
und damit ist die Bedingung erfüllt.
Gast
Ich wuerde mir mal ein C-Buch besorgen, das lesen und dann erst mit dem 
Programmieren anfangen. Wenn eine Posix-Umgebung vorhanden ist, finde 
ich immer noch das alte "Kernighan & Ritchie, Programmieren in ANSI-C" 
empfehlenswert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.