mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Teilwert eines Ports abfragen und in eine Variable abspeichern


Autor: Elektrolyt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>dass er nur die ersten 4 Bits des Ports in die variable
variable = ( PINC & 0b00001111);
// oder
variable = ( PINC & 0x0F );

Autor: Elektrolyt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und dann kann ich die übrigen pins wie gewohnt benutzen???

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: Elektrolyt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In Englisch,....

;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.