Byte aus Bits zusammenbasteln

#653168
Lesenswert?

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.
Gast #653448
Lesenswert?

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.
#653491
Lesenswert?

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.
Gast #654238
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren