Forum: Mikrocontroller und Digitale Elektronik P1, P2 etc in array


von .m4jX (Gast)


Lesenswert?

Wie bekomme ich hin, das P1, P2 etc. in arrays sind?
was ich meine ist, das ich wenn es geht ich dann irgendwo im programm

P1a[4]=1;

setze, dann automatisch auch P1_4 auf 1 gesetzt wird...
und auch andersrum, wenn ich P1_3=1; setze, dann soll P1a[3] auch 
automatisch 1 werden..

ich brauch das, damit ich die einzelnen bits in for-schleifen überprüfen 
kann...

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

.m4jX schrieb:
> ich brauch das, damit ich die einzelnen bits in for-schleifen überprüfen
> kann...

Bitoperationen?

P1_3=1  =>   P1 |= 1<<3

P1a[3] == 1   =>   P1 & 1<<3

von Peter D. (peda)


Lesenswert?

.m4jX schrieb:
> P1a[4]=1;
>
> setze, dann automatisch auch P1_4 auf 1 gesetzt wird...

Index auf Bits ist nicht möglich (unterstützt wohl auch keine CPU).

.m4jX schrieb:
> ich brauch das, damit ich die einzelnen bits in for-schleifen überprüfen
> kann...

Dazu nimmt man ne Maske, die man schiebt:
1
  mask = 1;
2
  for(;;){
3
    P1 |= mask;
4
    mask <<= 1;
5
  }

Peter

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
>Index auf Bits ist nicht möglich (unterstützt wohl auch keine CPU).

"bit banding" gibts beim Cortex-M und die Idee ist sicher nicht neu.

von Peter D. (peda)


Lesenswert?

Thomas Klima schrieb:
> "bit banding" gibts beim Cortex-M und die Idee ist sicher nicht neu.

Schon der 8051 hat Bitbefehle.
Aber das hat nichts mit der Frage hier zu tun.
Der OP wollte über einen Index (0..7) das Bit auswählen und das geht 
nicht.

Man kann sich bestenfalls eine Funktion schreiben, die den Index in eine 
Maske umrechnet und damit maskiert.


Peter

von .m4jX (Gast)


Lesenswert?

ok wenn das nicht geht, dann lass ich es so wie es ist... Vielen Dank an 
alle.

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.