www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unions, Typedefs und Bits


Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine frage zu dem thema unions und typedefs. Wenn ich einen 
bitzugriff auf eine z.B 8bit variable realisieren will mache ich das 
normalerweise so:

typedef union{
    IO_BYTE  byte;
    struct
    {
      IO_BYTE P10 :1;
      IO_BYTE P11 :1;
      IO_BYTE P12 :1;
      IO_BYTE P13 :1;
      IO_BYTE P14 :1;
      IO_BYTE P15 :1;
      IO_BYTE P16 :1;
      IO_BYTE P17 :1;
    }bit;
}PDR1STR;

jetzt habe ich folgendes problem:

ich möchte bei 2 8bit variablen gleichzeitig auf das 0-te bit zugreifen.

wenn ich jetzt also schreibe

pdr1.bit.P10 kann ich auf das 0te bit zugreifen, und es entweder auf 1 
oder 0 setzen.

das ganze jetzt mit 2 8 bit variablen:
ich möchte jetzt aber mit irgeneinem c-ausdruck einen 2 bit wert 
zuweisen, dessen eines bit in dem 0-ten bit der ersten variablen landet, 
und dessen weites bit in dem 0-ten bit der zweiten 8bit variable landet.

ist das möglich?


gruß,
m.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maddin wrote:

> das ganze jetzt mit 2 8 bit variablen:
> ich möchte jetzt aber mit irgeneinem c-ausdruck einen 2 bit wert
> zuweisen, dessen eines bit in dem 0-ten bit der ersten variablen landet,
> und dessen weites bit in dem 0-ten bit der zweiten 8bit variable landet.
>
> ist das möglich?

Nein, denn es handelt sich ja um 2 getrennte Variablen.
Schreib dir für den Zugriff eine Funktion oder meinetwegen
ein Makro.

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.