Dein Code funktioniert nicht, weil du eine "1" um den Wert des Bitmusters verschiebst. Radbruch hat vergessen, das oberste Bit wieder an den Anfang zurückzuführen.
Code:
//CPU ATMega8515
include <stdint.h>
int main( void )
{
DDRC = 0xFF ; // PC0 an PORTC als Ausgang setzen
PORTC = 0xFF; // Alle PIN C auf High =LED Aus (STK500)
PORTC &= ~(1 << 0); // Erstes Bit löschen -> Bitmuster mit einer laufenden LED
while(1) // Endlosschleife
{
const uint8_t pattern = PORTC;
PORTC = (pattern << 1) | ((pattern & (1 << 7)) >> 7); // Alle Bits um eins nach links schieben, oberstes Bit maskieren und ganz nach rechts schieben
_delay_ms(100); // Eine Sekunde warten...
}
return 0;
}
Lesezeichen