www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Integer in Byte (Bascom, Servo)


Autor: Matthias Wolf (mechatron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vieleicht kann mir jemand helfen.
Hab mir eine Platine gebaut an der ich Servos anschließen kann.
Auf dieser ist ein Atmega zur Steuerung. Jetzt will ich mit dem PC über 
RS232 Daten an den Atmega senden. Das geht auch soweit ganz gut. Leider 
sind das aber ASCII zeichen. SO versteh ich das. Wenn ich z.B den Wert
"50" per Hyperterminal sende kommen die Zahlen  "13,10,53,48" an.
Ich brauche aber die Zahl 50. Das ganze hab ich in Bascom geschrieben.
Der Servo braucht ja den wert als Byte. Hoffe jemand kann mir da 
weiterhelfen. Leider kenn ich mich nicht so gut aus.

Danke
Matthias

Autor: rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
var=val(var)
du must den string wieder in hex umwandeln

Autor: Christian Meurer (crischi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne zwar den Atmega nicht und auch das Bascom, aber das Prinzip 
ist mir klar.
Dann musst Du einfach von Deinem PC-Programm den Wert '50' übertragen, 
sozusagen, das Zeichen mit dem Wert 50. Das sieht in C etwa so aus:
sprintf( text, "%c", zeichen ) oder direkt eine Funktion zum binären 
Übertragen wie "WriteFile"
Bei der RS2323 musst Du dann aber darauf achten, 8Bit zu übertragen, 
wenn Du WErte oberhalb 128 brauchst.

Gruß

Christian

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ASCII Code für eine '0' ist 48.
Den musst du von jedem empfangenen ASCII Byte abziehen.
Dann bekommst du den Wert für die jeweilige Stelle.

(53-48) = 5
(48-48) = 0

5*10 + 0 = 50

Autor: ASCIItabelle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hai,

1. Grundsätzlich ist Hyperterminal sch......!
2. Wenn "13,10,53,48" ankommt und Du hast "50" gesendet, hast Du die 
ankommenden Zahlen falsch abgeschrieben, oder sie sind durch ein 
Wurmloch entkommen.
3. Wenn bei Dir "53,48,13,10"  ankommt, hast Du das Wurmlochproblem 
gelöst!
4. Wenn Du in BASCOM die Hilfe benutzt hättest, findest Du unter dem 
Suchwort 'ASCII':
Den zweiten Treffer - UART
Hier steht unter 'Example:'

Print
Print "Now try the enter key..."
Akey = Waitkey()
Akey = Waitkey()
Print Akey

Print
Print "The number you see is the ASCII value of the key you pressed."
Print "We need to convert the number back to the key..."
Print     'Notice what this line does
Print "Please try an alphanumerical key again..."
Akey = Waitkey()
Print Chr(akey) 'Notice what this does
Print "That's fine!"

5. Jetzt kannst Du Dir sogar die ASCII-Tabelle unter dem Befehl ASC() 
(dem ersten Treffer) in der BASCOM Hilfe angucken oder hier: 
http://de.wikipedia.org/wiki/ASCII-Tabelle

Servus,

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.