Gast
#268937
Hallo ich möchte gerne Fehlercodes durch Blinkmuster einer LED ausgeben. Das Muster wird in einem 8-Bit Wort "status" definiert. Mein erster Ansatz war, einfach durch das Wort zu shiften und so die einzelnen Bits nacheinander auf die LSB-Position zu bringen, die anscheinend(???) ausschlaggebend ist, wenn man einem IO-Port ein 8-Bit Wort zuweist: while(1) { tmp=status; for(i=0;i<8;i++) { PORTCbits.RC0 = tmp; tmp>>=1; } } Verrückterweise funktioniert das aber nicht; irgendwie werden zuviele Einsen ausgegeben. Das Blinkmuster 10100000 zum Beispiel sieht aus wie ganz normales gleichmäßiges Blinken. Mein zweiter Anlauf funktioniert zwar, aber irgendwie kann das nicht die wahre Lösung sein: while(1) { for(i=0;i<8;i++) { PORTCbits.RC0 = (status&(1<<i))>>i;; } } Zwei Bitshift-Operationen sind in meinen Augen zuviel Aufwand für so eine simple Sache. Wieso funktioniert mein erster Ansatz nicht? Vielen Dank schonmal Kent