ATmega16 und Bitfelder

Gast #491416
Lesenswert?
• ▲
▼
Hallo,

ich versuche seit längerem einzelne Bits, festgelegt in einer Struktur, 
auf den Ausgang PORTB  meines ATmega16 zu schreiben.

struct test
           {
           bit_0:1;
           bit_1:1;
           bit_2:1;
           bit_3:5;
         }port;

PORTB=port;

Kann mir jemand den richtigen Weg weisen, da ich schon einiges versucht 
habe. Eine weitere Frage, wäre wie kann ich mit einer selbstdefinierten 
Variable z.B. auf den Speicherbereich des PORTB verweisen kann, um damit 
z.B. port (im obigen Beispiel ) zuzuweisen.

Danke
Gast #491446
Lesenswert?
• ▲
▼

Hallo,

vielen Dank für die bisherigen Antworten.

Ich wollte es so realisieren, das ich zb.

port.bit_0=1 in der obigen Struktur setze... und er mir automatisch das 
Bit0 auf PORTB setzt...

doch irgendwie klappt es bisher nicht ..
Gast #491450
Lesenswert?
• ▲
▼
Mach doch folgendes :

typedef union
{
  unsigned char ucAll;
  struct
  {
    bit_0:1;
             bit_1:1;
             bit_2:1;
             bit_3:5;
  }Bit;
}typeDeineStruktur;


// Variablen Deklaration
typeDeineStruktur tDeineStruktur;

// Der Zugriff

1. tDeineStruktur.ucAll = 0x?? // Beschreibt das ganze Byte
2. tDeineStruktur.Bit.bit_0 // Beschreibt Bit 0 usw.

Der Zugriff auf den Port könnze so aussehen :

PORTB = tDeineStruktur.ucAll // Setzt PortB komplett

Probiers mal aus :-)

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