PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablendefinition mit char anstatt int ?!



bewild
26.09.2004, 10:55
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

muraad
26.09.2004, 11:43
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

Kjion
26.09.2004, 13:33
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

muraad
26.09.2004, 13:54
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

28.09.2004, 16:57
mal mit stdbool.h probieren :>

30.09.2004, 07:04
char oder int ist bei den ATMegas egal, da sie intern mit 16 Bit arbeiten.

Kjion
30.09.2004, 08:11
Nein!
Sie haben zwar einen 16-Bit Adressbus, sind aber ansonsten 8-Bit Prozessoren mit 8-Bit Registern usw. ...

MfG Kjion