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


von Alex22 (Gast)


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

von Andreas C. (acdc)


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

von Alex22 (Gast)


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...

von König Europas (Gast)


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.

von Alex22 (Gast)


Lesenswert?

Ja stimmt, da hast du Recht.
Danke für den Tipp!

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
Noch kein Account? Hier anmelden.