Gast
#1955663
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
|
Anzeige
|
5 stelligen wert über serielle schnittstelle mit uC einlesen
Gast
#1955663
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ß
Gast
#1955679
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...
Gast
#1955854
For I = 1 To 4 Do Loop Until Ucsr0a.rxc0 = 1 Temp = Temp + Chr(udr) Next vieleicht so? Bitte, gern geschehen!!! -_-
Gast
#1956552
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 Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|