32Bit einlesen; auf 8Bit verkleinern

OP #365983
Lesenswert?
• ▲
▼
Hi,
ich hab einen LPC2124 und möchte gerne den aktuellen Zustand der Pins
1.16-1.23 (also 8bit) einlesen. Ich steh aber ehrlich gesagt zZ ein
bisschen auf Schlauch und weis nicht wie das funktionieren soll.
Meine Idee wär mit "var = IO1Pin" (also Port1, wobei var eine 32bit
Variable ist) den ganzen Port einzulesen und dann irgendwie die Bits
16-23 (weil nur die interessieren mich) in eine Variable2 zu packen
(wobei Variable eine 8bit Variable ist).
Hat jemand ne Idee wie ich dass machen könnte?
OP #365984
Lesenswert?
• ▲
▼
Kann ich nicht einfach das gesamte 32Bit Wort um 16 Stellen nach links
verschieben und dann einfach sagen, dass das Ergebnis nur ne 8Bit
Variable is??

Also so undgefähr:

--------------------
uint32_t var;    // var  als 32 bit deklarieren
uint8_t var2;    // var2 als 8 bit deklarieren

var = IO1PIN;    // einlesen von Port1 und var zuweisen
var2 = var >>16; // var um 16 stellen nach rechts schieben
--------------------


Ginge das so, oder muss ich da einen anderen Weg wählen??

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.