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
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
Scheinbar gibt es in BASIC kein unsigned. Aber ich werde es so mal versuchen Danke
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.