CodeVision: Testen ob Bit gesetzt

Gast #136391
Hallo zusammen,

ich möchte im UCSR0A-Register(USART0) das RXC0-Bit abfragen ob es
gesetzt ist. Ich möchte auf das Einteffen eines Zeichens warten (dieses
RXC0-Bit wird dann 1).

Kann man mir sagen, wie ich in einer while-Schleife die
Abfragebedingung schreiben muss?`


Vielen Dank!
Gast #136392
while ( ! ( UCSR0A & 1 << RXC0 ) ) { }

Kontrollier im Datenblatt ob das RXC durch Auslesen vom Datenregister
gelöscht wird, sonst müsstest du RXC "händisch"  löschen.

grüße leo

PS.: Dieses Verfahren kann dich leicht in einen dead lock bringen, wenn
kein Byte daher kommt, wartet der uP ewig.
Gast #136393
Hallo leo9,

vielen Dank für die schnelle Hilfe! RXC wird durch das lesen des
UDR-Registers automatisch zurückgesetzt.

Dead lock dürfte in meinem Falle nicht auftreten, da ich kurze
Kommandos(3 Byte lang) empfangen möchte.

Nochmals Besten Dank.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.