Hallo Decca,
GrussCode://alle leds aus PORTB=0xff; //fang an mit led1 i=0; //fur immer... for (; ;){ //plaziere invertiere tasten data in 'keys' ('1'-bit heisst jetzt taste gedruckt) keys = ~PIND; //wenn taste 1 gedrukt... if ( keys & 1 ) //mache led (1+i) an PORTB |= ^(1<<PB0+i); //'^'=exclusive-oder benuzten und nicht '&'=und } //warte hier bis alle tasten los gelassen sind while(keys|=0xFF); } //selectiere mahl nachste led die angehen soll i++; }//fang mahl wieder von vorne bei 'fur immer' an 7654 3210 bits 1111 1111 PORTB alle leds aus 0000 0001 X=(1<<PB0+i) //i=0 1111 1110 'PORTB^=X' macht led1 an 1111 1110 PORTB = led1 an 0000 0010 X=(1<<PB0+i) //i=1 1111 1100 'PORTB^=X' macht led2 dabei auch an Ich weiss, es ist immer ein bischen schwer wenn mann '0' als 'eingeschaltet' betrachten soll und mann Exclusive-Or anwendet. Exclusive-Or = nur die bits die beide bytes gleich haben werden im resultat byte getauchst nach '0'. Anders gesagt: nur wenn eine von beiden bits '1' is wird das resultatbit auch '1'. 0 + 0 = 0 1 + 0 = 1 0 + 1 = 1 1 + 1 = 0
Henk







Zitieren

Lesezeichen