-
-
Variablendefinition mit char anstatt int ?!
Hallo Kollegen,
ich sehe immer wieder eine Variablendefenition mit "char" in der aber nur Zahlen abgespeichert werden. Warum nehmt Ihr/mann denn nicht "int"?
Hab ich da was nicht kapiert oder der Programmierer?
volatile char count;
SIGNAL (SIG_OVERFLOW1) {
if (count == 1) {
PORTB = 0xFF;
count--;
return;
}
if (count == 0) {
PORTB = 0x00;
count++;
return;
}
Gruss
Bernd
-
Erfahrener Benutzer
Roboter-Spezialist
unsigned char 8Bit 0 .. 255
char, signed char 8Bit -128 .. 127
unsigned short, unsigned short int 16Bit 0 .. 65535
short, signed short, short int 16Bit -32768 .. 32767
unsigned int 16Bit 0 .. 65535
Speicherverbrauch ist weniger.
Gruß Muraad
-
Erfahrener Benutzer
Roboter Genie
Auf 8-Bit Controller ist einfach der Code schneller und kleiner wenn man Byte Variablen benutzt ( natürlich nur da wo es reicht ). 16-Bit Werte werden über zwei Register/Speicherzellen aufgeteilt, so dass die auch erst einzeln wieder geladen werden müssen...
Bei 16 oder mehr Bit Mikrocontrollern sieht das natürlich wieder anders aus, da kann es effektiver sein Integer Werte zu benutzen.
MfG Kjion
-
Erfahrener Benutzer
Roboter-Spezialist
Kennt avr-gcc den Datentyp bool eigentlich? Oder muss ich sie mir durch Bit Strukturen selber machen? Wenn ja muss bei der deklarierung _bool oder bool geschrieben werden. Spezielle #include bei avr-gcc?
Gruß Muraad
-
mal mit stdbool.h probieren :>
-
char oder int ist bei den ATMegas egal, da sie intern mit 16 Bit arbeiten.
-
Erfahrener Benutzer
Roboter Genie
Nein!
Sie haben zwar einen 16-Bit Adressbus, sind aber ansonsten 8-Bit Prozessoren mit 8-Bit Registern usw. ...
MfG Kjion
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen