Hi! Ich kriege diese 2 Fehlermeldungen. Es ist primitiv aber verstehe ich nicht warum ist hier ein Fehler aufgetretten. C51 COMPILER V8.18 - SN: Eval Version COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2009 *** ERROR C141 IN LINE 155 OF USB I2C T5300 MAIN.C: syntax error near 'unsigned' *** ERROR C202 IN LINE 155 OF USB I2C T5300 MAIN.C: 'i': undefined identifier *** ERROR C202 IN LINE 156 OF USB I2C T5300 MAIN.C: 'i': undefined identifier *** ERROR C202 IN LINE 160 OF USB I2C T5300 MAIN.C: 'i': undefined identifier *** ERROR C141 IN LINE 193 OF USB I2C T5300 MAIN.C: syntax error near 'unsigned' *** ERROR C202 IN LINE 193 OF USB I2C T5300 MAIN.C: 'data_in': undefined identifier *** ERROR C202 IN LINE 212 OF USB I2C T5300 MAIN.C: 'data_in': undefined identifier *** ERROR C202 IN LINE 214 OF USB I2C T5300 MAIN.C: 'data_in': undefined identifier *** ERROR C141 IN LINE 216 OF USB I2C T5300 MAIN.C: syntax error near 'data_in' *** ERROR C141 IN LINE 463 OF USB I2C T5300 MAIN.C: syntax error near '}' C51 COMPILATION COMPLETE. 0 WARNING(S), 10 ERROR(S) Das ist der Code. Das Fehler wiederholt sich 2 mal für jede for Schleife mit dem Laufvariable i und data_in 8 bit µC _8051F320 while(!SDA) { // Provide clock pulses to allow the slave to advance out // of its current state. This will allow it to release SDA. XBR1 = 0x40; // Enable Crossbar SCL = 0; // Drive the clock low unsigned char i; for(i = 0; i < 255; i++); // Hold the clock low SCL = 1; // Release the clock while(!SCL); // Wait for open-drain // clock output to rise for(i = 0; i < 10; i++); // Hold the clock high XBR1 = 0x00; // Disable Crossbar } Danke für die Hilfe MFG Soo
In C dürfen Variablen nur zu Beginn eines Blocks definiert werden. Die Zeile unsigned char i; aber steht mittendrin. Gewöhn' Dir an, Quellcode in [ c ] und [ / c ] einzuschließen, dann wird er lesbarer!
Wo werden üblicherweise in Ansi-C Variablen deklariert?
probier mal
1 | for(unsigned char i = 0; i < 255; i++); |
manche antiquierten compiler machen sonst probleme.
Rufus t. Firefly schrieb: > In C dürfen Variablen nur zu Beginn eines Blocks definiert werden. seit wann denn das?
dieter schrieb: > Rufus t. Firefly schrieb: >> In C dürfen Variablen nur zu Beginn eines Blocks definiert werden. > > seit wann denn das? gerade gelesen C89/ANSI-C.
Hi, Danke für die Hilfe! Es hat geklappt! Der Kompiler kompliert das Code problemlos. Ich muss jetzt schauen ob es die gezielte Funktion erreicht wird und zwar Sensordaten durch die I2C Schnittstelle der µC die Daten lesen und diese Daten müssen dann im µC 8051F320 verarbeitet werden und dann via USB an PC schicken. Mit der USB zu PC Geschichte weiß ich bis jetzt nicht viel. Wenn jemand von Euch schon Erfahrung mit solcher Aufgabe, bitte um Hilfe. MfG Soo
Wie bereits in Deinem anderen Thread zum Thema beschrieben kannst Du das Thema auf die Ausgabe auf einer seriellen Schnittstelle reduzieren. Die USB-Umsetzung übernimmt dann ein USB-Seriell-Adapter.
dieter schrieb: > Rufus t. Firefly schrieb: >> In C dürfen Variablen nur zu Beginn eines Blocks definiert werden. > > seit wann denn das? Falsche Frage. Es hätte heißen müssen: "bis wann denn das?" Darauf wäre die Antwort: Bis 1999, als C99 seinen Vorgänger offiziell ersetzt hat. Leider hat es in den 11 Jahren immer noch nicht jeder Compiler geschafft, das auch umzusetzen.
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.