Hallo wollte mal um rat fragen wie ich einen 5 stelligen wert mit dem uC einlesen kann mit der seriellen schnittstelle. Und dan mit dem wert intern im uC weiter arbeiten kann Grüsse
Was für 5 Stellen? Dezimal? Hex? Byte? Genaue Beschreibung des Problems -> genaue Antwort :) Gruß
Erst eins, dann zwei, dann drei, ... Kannst du denn schon eine Stelle einlesen? Wenn nicht, wo klemmt es? Oliver
Joachim B. schrieb: > Was für 5 Stellen? Dezimal? Hex? Byte? Genaue Beschreibung des Problems > -> genaue Antwort :) Dazu noch: Wie wird übertragen: Als Binärwerte, d.h. die Zahl in Einzelbytes aufgetrennt oder als Text, d.h. die einzelnen Ziffern, mit ihrem jeweiligen ASCII Code.
ganz einfach: Die 5 Zeichen einlesen, die Zahl daraus berechnen, weitermachen...
For I = 1 To 4 Do Loop Until Ucsr0a.rxc0 = 1 Temp = Temp + Chr(udr) Next vieleicht so?
Hi >Hallo wollte mal um rat fragen wie ich einen 5 stelligen wert mit dem uC >einlesen kann mit der seriellen schnittstelle. Und dan mit dem wert >intern im uC weiter arbeiten kann Er wollte doch nur den Rat WIE er eine 5 stellige Zahl einlesen kann. Da sind Formate erst mal noch ohne Bedeutung. So kann eine 5 stellige Zahl auch ein 2 Byte - Wert sein. Also, nehmen wir den Fall an, es handelt sich um einen String in der Form "12345". Wenn die Empfangsroutine daraus eine Zahl machen soll, so ist es unumgänglich, ein String-Ende Zeichen 0A 0D (CR LF) anzuhängen, damit der Controller weis, die Zahl ist komplett und er kann nun diese zusammenrechnen. Mit der Info, es sind immer 5 Zeichen, kann man zusätzliche Sicherheit erreichen. Dann werden einfach vorgestellte "0"en mit übertragen. Also "00123"+0A 0D z.B. Kommen wir zur Unsetzung der Ziffern in Zahlen. Der ASCII - Code von 0 ist 30 hex oder 48 dez. Zieht man von dem übertragenen Byte nunn 30 hex ab, so erhält man 0 als Zahl und da die Zahlen aufeinander folgen, ergibt 39 hex -30 hex eine 9. Mit diesen Zahlen kann man nun rechnen, wie wir es in der Schule gelernt haben: "00123" ist auf Zahlen umgesetzt (ASCII - 30 hex) 00123 dez. im 5 Bytes. Die Komplette Zahl erhält man in dem man diese nun zusammenrechnet. 0 * 10 0000 = 0 + 0 * 1000 = 0 + 1 * 100 = 100 + 2 * 10 = 20 + 3 * 1 = 3 ------------------------ Ergebnis: 123 Wenn du die Zahlen nicht als ASCII bekommst, sondern in Bytes vorliegen hast, läßt du die Subtrktion mit 30 hex einfach weg. Als Start oder Endzeichen kannst du Werte -> 9 einsetzen, da eine Stelle ja nicht diesen Wert erreichen kann. Gruß oldmax
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.