mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C Syntax Fehler :syntax error near/undefined identifier


Autor: Mohamed Soo (soo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo werden üblicherweise in Ansi-C Variablen deklariert?

Autor: dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probier mal
      for(unsigned char i = 0; i < 255; i++);

manche antiquierten compiler machen sonst probleme.

Autor: dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly schrieb:
> In C dürfen Variablen nur zu Beginn eines Blocks definiert werden.

seit wann denn das?

Autor: dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mohamed Soo (soo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.