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!
so haste n Knight-Rider-LichtCode:#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! } }








Zitieren

Lesezeichen