www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC cc5x for-Schleifen Syntax Frage


Autor: Alex22 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
nachdem mir bei meinem ersten Beitrag heute Morgen so schnell, und 
erfolgreich, geholfen wurde möchte ich euch noch etwas fragen:

uns16 i,j;
i=1;
for(j=0;j<i;j++)
  PORTB.j = 1;

liefert mir beim Kompilieren einen Fehler, anscheinend kann er das .j 
hinter dem PORTB nicht verarbeiten. PORTB.0 z.B. ist aber möglich...
Weiß jemand den Grund dafür?

Schöne Grüße,
Alex

Autor: Andreas Croonenbroeck (acdc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex !

Was genau gibt der Compiler für einen Fehler aus ? Es kann sein, dass 
CC5x an der Stelle keine Variablen duldet, es kann aber auch sein, dass 
die Definition als uns16 falsch ist ... aber dafrü brauche ich mehr 
"Input" :-)

Gruß, Andreas

Autor: Alex22 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas!
Das hier ist das compile-log:

main.c:

}
PORTB.i = 1;
      ^------
Error[1] D:\Counter\main.c 27 : Syntax error
 (The expression must be corrected. The marker ^------ shows
 the approximate position where CC5X gives up. The documentation
 should be checked if the cause is not obvious)

uns16 habe ich als Variablentyp auch schon an anderen Stellen verwendet. 
Es scheint, als ob cc5x an dieser Stelle entweder keine Variablen 
duldet, oder wenn, dann stimmt mit dem Typ oder der Syntx wohl etwas 
nicht...

Autor: König Europas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, der duldet keine Variablen. Du musst den ganzen PORTB in eine 8 bit 
Variable laden, dann manipulieren, und dann wegschreiben. Da es mit 
Read-modify-write Befehlen Schwierigkeiten geben kann, schreibe ich 
parallel zu den Prots immer in eine Spiegelvariable, also:
port_b = 0xff;
s_port_b = 0xff;

Dann musst du einfach nur s_port_b verändern, und in das Port-Register 
schreiben.

Autor: Alex22 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja stimmt, da hast du Recht.
Danke für den Tipp!

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.