Forum: Mikrocontroller und Digitale Elektronik 5 stelligen wert über serielle schnittstelle mit uC einlesen


von Klaus joachim (Gast)


Lesenswert?

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

von Joachim B. (jojo84)


Lesenswert?

Was für 5 Stellen? Dezimal? Hex? Byte? Genaue Beschreibung des Problems 
-> genaue Antwort :)

Gruß

von Oliver (Gast)


Lesenswert?

Erst eins, dann zwei, dann drei, ...

Kannst du denn schon eine Stelle einlesen? Wenn nicht, wo klemmt es?

Oliver

von Karl H. (kbuchegg)


Lesenswert?

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.

von Justus S. (jussa)


Lesenswert?

ganz einfach: Die 5 Zeichen einlesen, die Zahl daraus berechnen, 
weitermachen...

von Schmit Andreas (Gast)


Lesenswert?

For I = 1 To 4
 Do
 Loop Until Ucsr0a.rxc0 = 1
 Temp = Temp + Chr(udr)
Next



vieleicht so?

von Joachim B. (jojo84)


Lesenswert?

Bitte, gern geschehen!!!


-_-

von oldmax (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.