hallo ich möchte bei einem 8051'er kompatiblen prozessor direkt die serielle schnittstelle lesen. bis jetzt habe ich das mit der funktion getch() gelöst. nun ist das aber ja nicht so ideal wenn gar kein zeichen über die serielle schnittstelle kommt. dann bleit das programm doch bei getch() stehen bis er ein zeichen empfängt. wie könnte ich das nun richtig lösen? am liebsten würde ich einfach sporadisch das register der seriellen schnittstelle lesen. ich habe das aber noch nie gemacht. vieleicht hat ja jemand einen guten tip. gruss tobias
na, sporadisch lesen ist nicht so gut, wenn ein Zeichen aus dem Receiver nicht abgeholt wird und ein neues kommt, ist das 1. futsch. Wenn abfragen, dann das Bit RI im SCON abfragen, wenn Zeichen da, abholen. Damit nichts verlorengeht, muss man allerdings recht häufig nachfragen. Besser ist Interruptbetrieb, ein empfangenes Zeichen löst einen int aus, in dessen Verlauf das Zeichen gelesen wird und im RAM abgelegt wird, gibt sicher fertige Software dafür.
Stimmt, da fehlt sowas wie kbhit(). Kann man aber einfach selber schreiben: bit kbhit( void ) // 0 = receive buffer empty { return RI; } Peter
danke schön funktioniert wunderbar. noch eine andere frage, wie kann ich folgendes in c einfacher programieren: char arr[]; if((arr[i] == '1')||(arr[i] == '2')||...)) mache etwas; ich möchte einfach nur "mache etwas" ausführen wenn arr[i] eine zahl zwischen 0 u. 9 ist. besten dank tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.