das Ergebnis bei dir ist auch nur logisch, eine Dezimale 1 entspricht 0b0000000_1_, wenn du jetzt nach rechts schiebst, fällt die 1 ins Nirvana und alles steht wieder auf 0
was du brauchst wäre in dem Fall 0b_1_0000000 -> 0x80 -> (128>>n)
ich geb dir mal ein beispiel für ein Lauflicht, bei dem man einfach die LED direkt manipuliert und nicht erst übern Counter geht!
Code:
#define LEFT 1
#define RIGHT 2
...
PORTB = 1;
unsigned char direction = LEFT;
while(1)
{
if(PORTB == 0x80) direction = RIGHT;
else if (PORTB == 0x01) direction = LEFT;
else {
if(direction == RIGHT) PORTB = (PORTB>>1);
if(direction == LEFT) PORTB = (PORTB<<1);
'PAUSE' // es gibt in der delay.h eine wait_ms(long) funktion mit der du millisekundenlange Pausen einbauen kannst, würde ich bei mehr Erfahrung durch eine timergesteuerte Variable ersetzen!
}
}
so haste n Knight-Rider-Licht
Lesezeichen