Ich habe einen Code für den 8051-Mikrocontroller geschrieben, in dem ich den Bittyp verwendet habe, ungefähr so:
static bit done_flag = 0; /* bit variable */
bit testfunc ( /* bit function */
bit flag1, /* bit arguments */
bit flag2)
{
.
.
.
return (0); /* bit return value */
}
Jetzt portiere ich dies auf den ATmega16 AVR-Controller. Ich habe festgestellt, dass der
Bittyp in AVR nicht unterstützt wird .
Das AVR-lib C-Benutzerhandbuch lautet:
Datentypen: char ist 8 Bit, int ist 16 Bit, long ist 32 Bit, long ist 64 Bit, float und double sind 32 Bit (dies ist das einzige unterstützte Gleitkommaformat), Zeiger sind 16 Bit (Funktionszeiger sind Wortadressen, um die Adressierung von bis zu 128 KB Programmspeicherplatz zu ermöglichen). Es gibt eine Option -mint8 (siehe Optionen für den C-Compiler avr-gcc), um int 8 Bit zu erstellen. Diese Option wird jedoch von avr-libc nicht unterstützt und verstößt gegen C-Standards (int muss mindestens 16 Bit betragen). Es kann in einer zukünftigen Version entfernt werden.
Was soll ich jetzt machen?
bool
Datentyp verwenden, aber ich denke, dass dieser immer noch als Byte gespeichert wird, da sind Sie sich nicht 100% sicher.