Hallo lieben Mitglieder, ich habe ein Problem bei der Abfrage der anliegenden Bits an einem Port. Programmieren tue ich in C und benutze ein Mega8. Ich habe zb ein 4 bit wert an portC anliegen und möchte diese 4 bits in einer Variable abspeichern (quasi den dualWert oder hexwert, den die Bits darstellen) Das ist soweit auch kein Problem. Ich scheitere daran, dem uC mitzuteilen, dass er nur die ersten 4 Bits des Ports in die variable speichern soll und die restlichen pins bei der abfrage unberücksichtigt lassen soll. Wie mache ich das am einfachsten? Ich habe versucht den Wert von PortC in eine uint8_t abzuspeichern und die restlichen Pins (Bits) von dem Wert der 4 Bits zu subtrahieren, damit nur der Wert dieser 4 bits in eine Variable gespeichert werden kann. Das ist aber in der hinsicht sehr mühevoll, weil ich immer die restlichen Pins separat abfragen muss, um den Wert von den 4 relevanten bits zu subtrahieren. Vielen Dank für mögliche Hilfe und Verbesserungsvorschläge und schönes WE MFG Elko
>dass er nur die ersten 4 Bits des Ports in die variable
1 | variable = ( PINC & 0b00001111); |
2 | // oder
|
3 | variable = ( PINC & 0x0F ); |
und dann kann ich die übrigen pins wie gewohnt benutzen???
>und dann kann ich die übrigen pins wie gewohnt benutzen???
Wie meinst du das?
in der variable hast du die unteren vier pins des PortC. die oberen vier
bits (in der variable) sind IMMER null.
der Port/Pin C bleibt unverändert
erstmal vielen dank für deine hilfe. kann man die sache mir den bitweisen operatoren irgendwo schön zusammengefasst nachlesen? ich meinte mit "wie gewohnt benutzen" ob ich die restlichen 4 pins am uC dann auch normal weiterbenutzen kann? als eingang und ausgang bespielsweise... aber ich denke ja schon... danke nochmal, bin wieder bissl schlauer geworden...
Elektrolyt, Du MUSST Dich UNBEDINGT mit solchen Sachen noch genauer befassen, es KANN EINFACH NICHT SEIN (und es DARF auch nicht sein), dass jemand der sich mit tieferer Programmierung befasst die elementarsten Bit-Funktionen OR/AND/XOR nicht beherrscht. Das wäre so wie ein Koch, der nicht weiss was Salz und Mehl ist. http://en.wikipedia.org/wiki/Bitwise_operation In Englisch, damit Du Dich auch daran gleich gewöhnen kannst, denn für Dein künftiges ausgiebiges Studium von Büchern und Datenblättern ist das sehr nützlich. Jochen Müller
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.