Arexx RP6 V2 Build your own robot kit RP6 V2 Manual Do Utilizador
![Arexx](https://files.manualsbrain.com/attachments/7d5bfb0ba6ea5b2685c982333a7389b552ce0a09/common/fit/150/50/e2737ebddbd476d0e73a3bf82f6692f0e681a71c3e37eb574014e9811fb8/brand_logo.gif)
Códigos do produto
RP6 V2
RP6 ROBOT SYSTEM - 4. Programmierung des RP6
4.4.4. Variablen
Erstmal fangen wir aber damit an, wie wir denn überhaupt Daten im Arbeitsspeicher
ablegen und auslesen können. Das geht mit Variablen. Es gibt in C verschiedene Arten
Erstmal fangen wir aber damit an, wie wir denn überhaupt Daten im Arbeitsspeicher
ablegen und auslesen können. Das geht mit Variablen. Es gibt in C verschiedene Arten
von Variablen - sog. Datentypen. Grundsätzlich sind dies 8, 16 oder 32Bit große,
ganzzahlige Datentypen, die entweder mit oder ohne Vorzeichen verwendet werden
ganzzahlige Datentypen, die entweder mit oder ohne Vorzeichen verwendet werden
können. Wieviel "Bit" eine Variable haben muss, hängt davon ab wie groß die Zahlen
sind (Wertebereich), die darin gespeichert werden sollen.
sind (Wertebereich), die darin gespeichert werden sollen.
Beim RP6 verwenden wir folgende Datentypen:
Typ
Alternative
Wertebereich
Bemerkung
signed char
int8_t
8 Bit: -128 ... +127
1 Byte
char
uint8_t
8 Bit: 0 ... 255
'' vorzeichenlos
int
int16_t
16 Bit: -32768 ... +32767
2 Bytes
unsigned int
uint16_t
16 Bit: 0 ... 65535
'' vorzeichenlos
long
int32_t
32 Bit: –2147483648 ... +2147483647 4 Bytes
unsinged long uint32_t
32 Bit: 0 ... 4294967295
'' vorzeichenlos
Da insbesondere der Datentyp „int“ auf verschiedenen Plattformen nicht standardisiert
ist und z.B. auf unserem Mikrocontroller 16 bit, auf PCs aber 32 bit groß ist, verwen-
ist und z.B. auf unserem Mikrocontroller 16 bit, auf PCs aber 32 bit groß ist, verwen-
den wir die neuere standardisierte Bezeichnung: int16_t
Diese Datentypen ist immer so aufgebaut: [u] int N _t
Diese Datentypen ist immer so aufgebaut: [u] int N _t
u : unsigned (kein Vorzeichen)
int : Integer (ganze Zahl)
int : Integer (ganze Zahl)
N : Anzahl der Bits, z.B. 8, 16, 32 oder 64
_t : t wie „type“ um Verwechslungen mit anderen Bezeichnern auszuschließen.
_t : t wie „type“ um Verwechslungen mit anderen Bezeichnern auszuschließen.
Auf einem Mikrocontroller kommt es oft auf jedes Byte Speicherplatz an, daher behält
man mit dieser Bezeichnung auch besser den Überblick. Man sieht der Bezeichnung
man mit dieser Bezeichnung auch besser den Überblick. Man sieht der Bezeichnung
sofort an, dass es sich um einen 16bit Datentyp handeln muss (wegen der 16 im Na-
men). Steht noch ein „u“ davor, handelt es sich um einen „unsigned“ also vorzeichen-
men). Steht noch ein „u“ davor, handelt es sich um einen „unsigned“ also vorzeichen-
losen Datentyp. Sonst ist der Datentyp „signed“ also vorzeichenbehaftet.
Das wurde oben in der Tabelle aber nur bei „signed char“ hinge-
schrieben, denn int und long sind standardmäßig vorzeichenbehaftet
schrieben, denn int und long sind standardmäßig vorzeichenbehaftet
und nur char ist standardmäßig vorzeichenlos - auch wenn man es
nicht explizit hinschreibt. Das resultiert aus einer Compileroption die
nicht explizit hinschreibt. Das resultiert aus einer Compileroption die
wir verwenden und die auch fast immer beim AVR-GCC aktiviert ist.
Bei Strings (=Engl. für Zeichenketten) wird auch weiterhin „char“ ge-
Bei Strings (=Engl. für Zeichenketten) wird auch weiterhin „char“ ge-
nutzt da sonst wegen der Definition von uint8_t ein paar Dinge aus
der C Standard Bibliothek nicht damit kompatibel wären und es oh-
der C Standard Bibliothek nicht damit kompatibel wären und es oh-
nehin logischer ist, hierfür den Datentyp char (=Engl. für „Zeichen“)
zu verwenden. Das wird im Kapitel über die RP6Library bei Textaus-
zu verwenden. Das wird im Kapitel über die RP6Library bei Textaus-
gabe über die serielle Schnittstelle noch etwas genauer behandelt.
Also merken wir uns einfach: Bei Zeichen und Zeichenketten immer
Also merken wir uns einfach: Bei Zeichen und Zeichenketten immer
„char“ verwenden, bei Zahlenwerten immer uintN_t oder intN_t!
- 67 -