www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik einzelne bits lesen / setzen


Autor: Gustav-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallie hallo allerseits!

bin gerade dabei mein fertiges Prograemmchen zu optimieren und hab da 
ein Problem gefunden, dem ich nicht Herr werde.
hoffe, hier kann mir vielleicht jemand weiter helfen:

und zwar sollen im Programm verschiedene Bausteine und Funktionen ueber 
UART (Hyperterminal/Labview) ein und aus geschaltet werden.
das habe ich bis Dato mit einem ganzen Byte gemacht, in das ich eine 1 
oder 0 geschrieben hab und im Programm dieses Byte auch auf 1 oder !1 
abgefragt hab. Funktioniert, aber da werden bisl Ressourcen verballert, 
denk ich.

nun wuerd ich gerne ein Byte nehmen und die bits darin Umschalten und 
Auslesen, aber so, dass die anderen bits, die dann fuer andere 
Funktionen stehen, unangetastet bleiben und selber auch gesetzt und 
ausgelesen werden koennen.
allgemein, will ich alle Funktionen die zwischen on/off abfragen mit 
einem Byte erschlagen.

mein Problem ist nun, dass ich nicht wirklich weiss, wie ich ein Bit 
abfragen kann ohne grosse Rechenoperation und ohne die Bits zu schieben.
Bits von null auf 1 unabhaengig von den anderen zu switchen funktioniert 
mit
Byte^=0x0001, Byte^=0x0002, Byte^=0x0003 usw, denk ich, ganz gut?

wuerde mich freuen, wenn jemand einen Ansatz parrat haette

Mein System:
DSPIC33
MPLAB C30 Compiler

Gruesse
Gustav-G

Autor: Tobias Korrmann (kurzschluss81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuchs mal mit Maskierung.
Also
if(Byte & 0x01) oder if(Byte & 0x02)
bzw.
Gruß
Tobias

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Gustav-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke fuer die Info

hab die Bits manipuluiert!


Setzen wie gehabt: "switch^=0x0008;"
Lesen: "if ((switch & 0x0008) == 8 bzw 0)"

nuja...doch einen ganzen KB hats in der HEX Datei erspart aber die 
Übersicht ist floeten gegangen.

aber Dankeschoen fuer die Infos!

Gruesse

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.