Forum: Mikrocontroller und Digitale Elektronik einzelne bits lesen / setzen


von Gustav-G (Gast)


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

von Tobias K. (kurzschluss81)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?


von Gustav-G (Gast)


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

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
Noch kein Account? Hier anmelden.