ATMEGA16 + STK500 - Lauflicht
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