ATMEGA8 - toggle Befehl

Gast #1754441
Hallo,

kleine Frage zum ATMEGA 8.

folgendes funktioniert als Schleife einwandfrei:
1
PORTC ^= (1<<PC5);  /* LED am PC5 umschalten */
2
_delay_ms(1000);  /* eine Sekunde warten*/

folgendes funktioniert nicht:
1
PORTC ^= (0<<PC5);  /* LED am PC5 umschalten */
2
_delay_ms(1000);  /* eine Sekunde warten*/

meine Frage: warum?

Ich tue doch überall das gleiche:
Ich schalte PC5 um. Also entweder von 0 auf 1 oder von 1 auf 0.

Kann mir das jemand erklären?

Grüße

Sebastian
Gast
>>folgendes funktioniert als Schleife einwandfrei:

woher weiß der Controller dass er sonst die Befehle wiederholen soll?

Wenn du ständig toggeln willst muss es natürlich in einer Schleife 
stehen.
Du solltest Dir mal aufdröseln, was genau da eigentlich genau steht:

(1<<PC5) bedeutet ja, nehme die "1" und schiebe sie um "PC5" Stellen 
nach links. PC5 hat hier den Wert 5. Also kommt bei einer 8Bit Zahl 
heraus: 0010 0000. Wenn Du nun also (0<<PC5) schreibst, kommt einfach 
0000 0000 heraus. Somit änderst du am PORTC garnichts mehr.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.