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
Diesen Teil des Skripts habe ich mir schon durchgelesen. Doch leider steht nicht drin, wie ich die einzelen Bitfelder mit PORTB verknüpfen kann.
PORTB |= (1<<bitnumber); // einzelnes Bit setzen PORTB &= ~(1<<bitnumber); // einzelnes Bit löschen PORTB |= bitmask; // mehrere Bits setzen PORTB &= ~bitmask; // mehrere Bits löschen MfG Falk
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 ..
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 :-)
Wenn schon, dann muss das so heissen typedef union { unsigned char ucAll; struct { unsigned char bit_0:1; unsigned char bit_1:1; unsigned char bit_2:1; unsigned char bit_3:5; }Bit; }typeDeineStruktur; Es ist aber IMHO den Aufwand nicht wirklich wert.
@ Gast: vielen Danke es klappt.. könntest du mir kurz erklären warum so.. oder vielleicht sagen, wo eine Erklärung für diesen C-Code steht.. Vielen Dank
> wo eine Erklärung für diesen C-Code steht
Eigentlich in jedem Grundlagenbuch über C
"Kernighan & Ritchie, Programmieren in C"
Hi, schön das es klappt :-) u.a. findest Du mehr Info im Buch C für Mikrocontroller von Burkhard Mann (1´ste Auflage : Kapitel Anonyme Strukturen und Union auf Seite 187) :-)
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.