Hallo,
vermutlich ist es ein einfacher Fehler, doch zunächst mein Quelltext:

Code:
#include <avr/io.h>
#include <avr/delay.h>
 
void main(){
  DDRB = 0xFF; // Alle Pins sind Output
  PORTB = 0xFF; // Alle LEDs ausschalten
 
  // Hier möchte ich z.B. um 2 nach links shiften
 
  PORTB &= (0<<2);
 
 
  // Restlicher Code nicht mehr relevant [...]

Mein Problem ist das shiften.

Wenn ich in PortB alles auf 1 setze, sind alle LEDs ausgeschaltet.
Nun möchte ich die dritte Lampe einschalten.
Dementsprechend müsste ich ja an die Stelle eine 0 schreiben wohingegend der Rest weiterhin 1 bleibt.

1111 1111 vorher
1111 1011 shift 0<<2
---------- logisches &
1111 1011


Mein PortB müsste also nach der Operation dem shiften
PortB so 1111 1011 aussehen.

Doch alle LEDs bleiben einfach an.

Hat jemand eine Idee?


Danke
Kesandal