Gast
#449326
Hallo zusammen, ich habe ein ungewöhnliches Problem mit der seriellen Schnittstelle meines 8051. Ich habe sie so programmiert, dass ich mein Board mit ASCII-Zeichen über HyperTerminal steuern kann und ich mache es auf diese Weise schon seit längerer Zeit, bin also kein blutiger Anfänger. Die Hauptschleife sieht ungefähr wie folgt aus: while(1) { putchar('s'); (1. Kontroll-putchar) c = _getkey(); putchar(c); (2. Kontroll-putchar) if(c == 't') { längerer Anweisungsblock... } putchar(c); (3. Kontroll-putchar) } Seit einiger Zeit habe ich jetzt das Problem, dass er mir nur jedes zweite mal die if-Abfrage abarbeitet, wenn ich ein 't' eingebe, denn jedes zweite mal springt er direkt zum 3. putchar. Ich arbeite ohne Debugger, deswegen diese putchar's, (aber auch ohne diese sieht das Signal genau so aus, wenn ich es mit dem Oszi anschaue). Beim 3. putchar messe ich nähmich ein 0x0B an der seriellen Schnittstelle und ich habe keinen blassen Schimmer wo dieses Zeichen herkommen soll. Das "beste" ist, bei "Fehlfunktion" überspringt er auch das zweite putchar, was vollkommen unsinnig ist! Ich arbeite mit eigenen Funktionen und ohne Interrupts. Ich habe auch ein Reserver-Board mit dem gleichen Prozessor, und es passiert das gleiche. Hat da einer ähnliche Erfahrung gemacht?? Woran könnte es liegen? Wäre für jede Hilfe dankbar. Markus