Bin mal wieder überfordert ;) Habe ein Byte das 8 Tasten darstellt. Jetzt möchte ich natürlich gerne wissen welche Tasten gedrückt sind damit ich entsprechend auf die jeweilige Taste reagieren kann. Die Tasten sind 0 aktiv, also wenn sie gedrückt sind erscheint eine log 0. Wie komme ich jetzt an die einzelnen Bits ran? Gruß und danke im Vorraus tacklemoe
z.B indem du eine Schleife acht mal durläufst und dabei dein Byte mit einem "Mask-Byte" logisch UND verknüpfst. Das Mask-Byte setzt Du am Anfang der vor der Schleife auf 1, dann wird in der Schleife abgefragt, ob die Uund-Verknüpfung 0 ergibt (dann war der Taster gedrückt) und am Ende der Schleife schiebst Du das die 1 im Maskbyte um eine Stelle nach links, durläufst die Schleife wieder und fragst so die anderen Taster ab.
Ähm, und wie sehe das im Code aus? Ich hab mich da jetzt bissle probiert aber bin net wirklich weitergekommen :( Mein Ansatz ging in diese Richtung: for(i=0;i<8;i++) { if(i2c_buffer && mask_byte) rprintf("%d ",i); mask_byte <<= 0; } Allerdings werden dann immer alle Bits angezeigt.
Schon fast gut mask_byte = 1 for(i=0;i<8;i++) { if(i2c_buffer & mask_byte) rprintf("%d ",i); /* nur ein & zeichen beide Bytes verunden */ mask_byte <<= 1; /* einmal links schieben */ } habe es selbst nicht getestet. Dieter
Jep das klappt. Jetzt seh ich's auch selbst.. Hab nicht das bitvergleichende AND genommen ;) Gruß und danke tacklemoe
Wenn du nicht das Maskbyte verschiebst, sondern deine eingelesenen Werte, dann erhältst du immer die Werte 0 oder 1 und nicht 1, 2, 4... wie bei der aktuellen Umsetzung. (Falls dich das stört).
Danke für den Tipp. Die jetzige Lösung ist aber grade richtig für meinen Anwendungszweck, ich übergebe die entsprechenden BitNummern direkt an eine Funktion die dann weitermacht :)
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.