Hi, kann mir jemand weiterhelfen: Arbeite mit Keil µVision2 und er kann den folgenden Befehl nicht interpretieren (Meldung: ERROR C141: syntak error near '<'): temp2=<6; Gruß, BORIS
willst du sagen das temp2 grösser gleich 6 sein soll? oder was willst du machen? wenn temp2 grösser gleich 6 sein soll, dann musst du: temp2<=6; schreiben.
hab ich auch schon versucht, aber da bringt mir das programm immer: warning C275:expression with possibly no effect
ganz blöd von php abgeleitet kann man einer variabel doch keinen wert "größer als x" zuweißen sondern nur einen festen wert also z.b. temp2=6; . temp2<=6 würde in dem fall nur bei if gehen wenn temp <= 6 dann .... kann sein das ich unsinn laber aber wer weiß....
@dirk ups... kleiner gleich... nicht grösser gleich .... sorry, ist aber ja schon spät ;-) @christian: bei if benutzt du das nicht, denn dann würde stehen: if(temp2<=6) in der schreibweise könnte das nur in einer for-Schleife vorkommen. aber ich hoffe nicht das hier nur ein teil der schleife dargestellt wird ;-) @ Boris: könntest du bitte genauer sagen was es bewirken soll? wenn einfach nur eine zahl kleiner gleich 6 erzeugt werden soll, dann würde ich eine zufallszahl generieren und eine modulodivision durch 6 machen ;-) aber ich glaube das ist nicht das, was du suchst. Also zeig mehr code oder beschreibe einmal!
"warning C275:expression with possibly no effect" Da hatter doch recht. Du machst einen Vergleich und schmeißt das Ergebnis dann weg. i = temp2=<6; hätte z.B. einen Effekt. Oder eben innerhalb eines if, for, while. Peter
Hi, danke für die Hilfe! Hier mein Code (habe ein Komentar beim Problem vermerkt): struct date // Struct für das Datum { uchar tag; uchar monat; int jahr; }; uchar DectoHex(uchar value); uchar HextoDec(uchar value); void get_datum(struct date *t); void set_datum(struct date *t); void get_datum(struct date *t) { volatile uchar temp; volatile uchar temp1; volatile uchar temp2; volatile uchar temp3; volatile uchar jahrtemp; volatile int t_jahr; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x05); i2c_start(); i2c_schreiben(0xa1); temp=i2c_lesen(1); i2c_stop(); temp1=temp&0x0f; temp2=temp&0x30; temp3=temp&0xc0; temp3=temp3>>6; temp2=temp2>>4; temp=temp1 + ( 10*temp2); t->tag=temp; jahrtemp=temp3; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x06); i2c_start(); i2c_schreiben(0xa1); temp=i2c_lesen(1); i2c_stop(); temp1=temp&0x0f; temp2=temp&0x10; temp2=temp2>>4; temp=temp1 + ( 10*temp2); t->monat=temp; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x2f); i2c_start(); i2c_schreiben(0xa1); temp=i2c_lesen(1); i2c_stop(); temp1=temp; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x3f); i2c_start(); i2c_schreiben(0xa1); temp=i2c_lesen(1); i2c_stop(); temp2=temp; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x4f); i2c_start(); i2c_schreiben(0xa1); temp=i2c_lesen(1); i2c_stop(); temp3=temp; t_jahr=(temp1*100)+temp2; if (temp3==jahrtemp) t->jahr=t_jahr; else { t_jahr++; t->jahr=t_jahr; temp2=t_jahr%100; temp1=t_jahr/100; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x2f); i2c_schreiben(temp1); i2c_schreiben(temp2); i2c_schreiben(jahrtemp); i2c_stop(); }; } void set_datum(struct date *t) { volatile uchar temp; volatile uchar temp1; volatile uchar temp2; volatile uchar temp3; volatile uchar speicher1; volatile uchar speicher2; volatile uchar jahrt; temp=t->tag; temp1=temp/10; temp2=temp%10; temp3=(temp1<<4)|temp2; temp=t->jahr; temp2=temp%4; jahrt=temp2; temp2=<6; // HIER DAS PROBLEM speicher1=temp2|temp3; temp3=get_wochentag(); temp3=<5; temp=t->monat; temp1=temp/10; temp2=temp%10; temp1=<4; speicher2=temp1|temp2|temp3; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x05); i2c_schreiben(speicher1); i2c_schreiben(speicher2); i2c_stop(); temp=t->jahr; temp1=temp/100; temp2=jahr%100; i2c_start(); i2c_schreiben(0xa0); i2c_schreiben(0x2f); i2c_schreiben(temp1); i2c_schreiben(temp2); i2c_schreiben(jahrt); i2c_stop(); }
Was sollen denn diese Zeilen bezwecken? temp2=<6; // HIER DAS PROBLEM temp3=<5; temp1=<4; Könnte es sein, daß Du etwas ähnliches vorhast, wie weiter oben in Deinem Sourcecode? temp3=temp3>>6; temp2=temp2>>4; Dann würde temp2 <<= 6; (was äquivalent zu temp2 = temp2 << 6; ist) temp2 um sechs Bits nach links schieben (also mit 64 multiplizieren). Im übrigen ist das schwer lesbarer Spaghetticode. Man darf auch selbsterklärende Variablennamen, Kommentare und logisch strukturierenden Whitespace sowie Leerzeilen verwenden, das ist alles andere als verboten. Hast Du das wirklich selber geschrieben?
Nein, das ist genau das Problem. Das ist von einem Vorgänger und ich steig absolut nicht durch. Das ganze Prog. ist so geschrieben und dieser Teil ist nur etwa ein fünfzigstel des ganzen Codes... Danke für die Hilfe, das bringt mich schon weiter. BORIS
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.