kramann.info
© Guido Kramann

Login: Passwort:










3.3 Bitmasken für den Eingang

Wie kann man gleichzeitig mehrere Taster auf ihren Zustand hin überprüfen?

  • Bei dem Experimentierboard sind ein Taster an PB0 (Taster 0) und ein weiterer an PB1 (Taster 1) angeschlossen.
  • Will man sichergehen, dass eine bestimmte Aktion nur durchgeführt wird, wenn Taster0 gedrückt, jedoch Taster 1 nicht gedrückt ist, dann müssen sowohl Bit 0 als auch Bit 1 auf ihren Zustand hin überprüft werden.
  • Die folgende Tabelle zeigt, wie solche Überprüfungen aussehen können:
Beschreibung Umsetzung 1 Alternative Umsetzung 2 Alternative Umsetzung 3
Bedingung wahr, wenn PB0==0 und gleichzeitig PB1==0 akku = PINB;
if( (akku & 0b00000011) == 0 )
{ Befehle }
akku = PINB;
if( (akku & ( (1<<0) | (1<<1) )) == 0 )
{ Befehle }
akku = PINB;
if( (akku & ( (1<<PB0) | (1<<PB1) )) == 0 )
{ Befehle }
Bedingung wahr, wenn PB0==1 und gleichzeitig PB1==0 akku = PINB;
if( (akku & 0b00000011) == 1 ){ Befehle }
akku = PINB;
if( (akku & ( (1<<0) | (1<<1) )) == (1<<0) )
{ Befehle }
akku = PINB;
if( (akku & ( (1<<PB0) | (1<<PB1) )) == (1<<PB0) )
{ Befehle }
Bedingung wahr, wenn PB0==0 und gleichzeitig PB1==1 akku = PINB;
if( (akku & 0b00000011) == 2 ){ Befehle }
akku = PINB;
if( (akku & ( (1<<0) | (1<<1) )) == (1<<1) )
{ Befehle }
akku = PINB;
if( (akku & ( (1<<PB0) | (1<<PB1) )) == (1<<PB1) )
{ Befehle }
Bedingung wahr, wenn PB0==1 und gleichzeitig PB1==1 akku = PINB;
if( (akku & 0b00000011) == 3 ){ Befehle }
akku = PINB;
if( (akku & ( (1<<0) | (1<<1) )) == ( (1<<1) | (1<<0) ) )
{ Befehle }
akku = PINB;
if( (akku & ( (1<<PB0) | (1<<PB1) )) == ( (1<<PB1) | (1<<PB0) ) )
{ Befehle }

Tabelle 3.3-1: Berücksichtigung des Zustands mehrerer Taster gleichzeitig.

Die Beispiele werden während der Vorlesung an der Tafel besprochen