Kann man ein Byte aus einzelnen Bits zusammenbasteln? also z.B. PB1,PB2,PC1,PC3,PD0,PD1,PD3,PD4 = MyPorts, so dass ich dann mittels einer einzigen Zuweisung, z.B. Myports = char_irgendwas; den Inhalt eines Bytes den Ports zuweisen kann?
flyingwolf wrote: > Kann man ein Byte aus einzelnen Bits zusammenbasteln? > also z.B. PB1,PB2,PC1,PC3,PD0,PD1,PD3,PD4 = MyPorts, > so dass ich dann mittels einer einzigen Zuweisung, z.B. > Myports = char_irgendwas; > den Inhalt eines Bytes den Ports zuweisen kann? Nein.
flyingwolf wrote: > Kann man ein Byte aus einzelnen Bits zusammenbasteln? > also z.B. PB1,PB2,PC1,PC3,PD0,PD1,PD3,PD4 = MyPorts, > so dass ich dann mittels einer einzigen Zuweisung, z.B. > Myports = char_irgendwas; > den Inhalt eines Bytes den Ports zuweisen kann? Ja.
@Thomas (Gast) > flyingwolf wrote: > (...) > > Ja. Nein. Karl Heinz hat das bereits korrekt beantwortet, man kann nicht. Vermutlich hast Du die Aufgabenstellung nicht richtig verstanden.
wie rufus + karl heinz schon geschrieben haben, geht das für mehrere ports nicht, man kann es aber für einen port über den umweg einer union machen ...
1 | typedef union { |
2 | uint8_t all; |
3 | struct { |
4 | uint8_t Pin0:1; |
5 | uint8_t Pin1:1; |
6 | uint8_t Pin2:1; |
7 | uint8_t Pin3:1; |
8 | uint8_t Pin4:1; |
9 | uint8_t Pin5:1; |
10 | uint8_t Pin6:1; |
11 | uint8_t Pin7:1; |
12 | };
|
13 | }MyPortA; |
Dann kannst du irgendwo (z.B. im Timer) dann einfach
1 | PORTA = MyPortA.all; |
machen.
Wenn einem dann noch wirklich fad ist, kann man einen Zeiger auf die Union machen, den dann auf PORTx umbiegen und dann direkt die Pins am Port setzen. Ist halt 'etwas' langsamer, da jedesmal ein zeiger ausgelesen werden muss. lg Peter
Ich denke mal, es geht dem OP hier tatsächlich um Pins an mehreren unterschiedlichen Ports. Und da geht es so nicht, basta!
In C nicht, aber in C++ kann man sich eine Klasse zusammenbasteln, die das erledigt. Das gibt aber ziemlich viel Bitgefriemel, das unter Umständen relativ großen und langsamen Code zur Folge hat.
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.