Forum: Mikrocontroller und Digitale Elektronik negative Zahlen über die RS232


von Benshee (Gast)


Lesenswert?

Hallo

Ich möchte gerne von meinem mega32 negative Zahlen übertragen aber auf 
dem PC kommt dann nach 0 nur noch 255 254 253 für -1 -2 -3 usw. an.

int Temp[] = {-3,-2,-1,0,1,2,3,4 usw.}

ICh nutze AVR gcc /AVR STudio und ein Windows 3.11 mit einem BASIC 
Programm (RS232 abfrage) als PC .

Wie kann ich das machen , das ich auf dem PC -3 -2 -1 sehe ??


Vielen Dank

von remo (Gast)


Lesenswert?

Liegt nicht am c sondern an deinem Basic Programm.
Du musst einem Basic beibringen, dass die Werte nicht "unsigned" sind.
Falls du keinen geigneten Datenwert hast, dann wandle doch einfach mit 
einem kurzen Befehl den Wert selber um, wenn > 127 übertragen wird.
so z.B.
if zahl > 127; zahl = zahl - 256

Viel Glück
Remo

von Benshee (Gast)


Lesenswert?

Scheinbar gibt es in BASIC kein unsigned. Aber ich werde es so mal 
versuchen

Danke

von Zacc (Gast)


Lesenswert?

Zahlen und Byte haben eigentlich sehr wenig miteinander zu tun. Deshalb 
muss die Bedeutung zugewiesen werden. Dasselbe trifft auch fuer Char und 
String zu. Bei Zahlen muss man zuerst die Byteorder definieren. Das kann 
LittleEdnian oder BigEndian sein. LittleEndian heisst Low byte on low 
adresss, BigEndian  hat highb yte on low adress. Dann gibt's noch Sign 
oder nicht, und float.

Z

von Ralph (Gast)


Lesenswert?

Der RS 232 ist es völlig egal ob die übetragenen 8 Bit ein Unsigned oder 
ein Signed Byte darstellen.

Du musst auf dem PC wissen welches Format das empfangene Byte besitzt, 
und dieses Byte dann dementsprechend auswerten.

Ohne eine manuelle Formatierung wird jedes empfangene Byte immer als 
unsigned interpretiert.

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.