PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bitmanipulation



teslanikola
29.08.2005, 19:09
So hab ein kleines Problem, ich will die Bits eines Bytes verändern ( Bitmanipulation) aber ich hab kein Plan wie das in Bascom gehen soll.

Beispiel:

das 3. Bit eines Bytes soll auf High gesetzt werden also von

&B00000000 nach
&B00000100

ohne die anderen Bits zu verändern also wenn ich zB sowas hab:

&B01010101
und das 4. soll High werden muss das rauskommen:
&B01011101

wie kann ich das lösen? Das es geht weis ich aber wie??????

Rage_Empire
29.08.2005, 19:29
Geht so:

xxxx=&B00000x00 or &B00000100
xxxx=xxxx and &B00000x00

nennt man maskieren oder so. Mit And und Or kannst du sehr viel machen. Viel erfolg

roboguy
29.08.2005, 19:31
Soviel ich gesehen habe, kennt AVR BASCOM die typischen logischen Operatoren nicht. Ein kurzer Blick in die Hilfe liefert allerdings die Funktion "Bits" - dort solltest du einmal nachsehen.

teslanikola
29.08.2005, 19:49
ich hab noch was viel besseres entdeckt ( beim experimentieren)

das ist in BASCOM einfacher als ihr es euch vorstellen könnt:


Dim Variable as Byte

Variable = &B0000000

Print variable

Variable.5 = 1

Print variable

END

So probierts mal aus!!!!!!

hrei
29.08.2005, 20:22
Soviel ich gesehen habe, kennt AVR BASCOM die typischen logischen Operatoren nicht. Ein kurzer Blick in die Hilfe liefert allerdings die Funktion "Bits" - dort solltest du einmal nachsehen.

Unsinn. Mache Bascom bitte nicht schlechter als es ist.

Aus der Hilfe:


Logical Operators

Logical operators perform tests on relations, bit manipulations, or Boolean operators.
There four operators in BASCOM are :


Operator Meaning
NOT Logical complement
AND Conjunction
OR Disjunction
XOR Exclusive or

It is possible to use logical operators to test bytes for a particular bit pattern.
For example the AND operator can be used to mask all but one of the bits
of a status byte, while OR can be used to merge two bytes to create a particular binary value.


Example

A = 63 And 19
PRINT A
A = 10 Or 9
PRINT A


Henrik

roboguy
29.08.2005, 21:28
@henrik
Es lag mir nicht daran, BASCOM schlecht zu machen. Ich habe lediglich in meiner BASCOM-Version im Hilfe-Index nachgesucht und dort weder eine Referenz zu den booleschen Operationen noch zum Stichwort LOGICAL gefunden - ich muss allerdings gestehen, dass ich nur kurz über die Indexstichwörter geschaut habe und da war es eben nicht dabei.