Gast
#346328
Hi, ich stehe immer wieder vor dem Problem, Ports, von denen ich nur einige Bits benötige, in Variablen zu schreiben. Mit ganzen Ports geht das mit chars: unsigned char ganzer_port = PINC; funktioniert reibungslos. Andere Situation: Diesmal sind nur die vier LSBs als Eingänge konfiguriert. Dann funktioniert folgendes: unsigned char halber_port = (PINC & 0x0F); anscheinend nicht wie gedacht (nämlich, daß ein Wert zwischen 0 und 15 in halber_port landet.) Wenn ich mir die Bits jetzt mit boolscher Algebra und Bitshift zusammenfummele, landet anscheinend zufällig mal ein anderer Wert in der Variablen. Kann das sein, daß ich da auch führende Nullen berücksichtigen muß? Das einzige, was ohne Probleme geht, ist direkt die einzlenen Portbits mit Logikoperationen zu isolieren und als Bedingung in einer Verzweigungsoperation zu verwenden. Nun dünkt mir, daß ich da anscheinend irgendwann mal was sehr grundlegendes zum Thema I/O verpasst habe... ...weiß mir von Euch vielleicht jemand Rat? Gruß, Harald