[an error occurred while processing this directive]
|
char Flags; // резервируем байт под флаги (биты)
Для компактности кода лучше это сделать через регистр:
__regvar __no_init char Flags @ 15; // Не забудь в
Options/ICCAVR/Code в Register utilization зарезервировать R15
Далее описываем биты:
#define Fl_1 0
#define Fl_2 1
#define Fl_3 2
#define Fl_4 3
........и т.д.
Для побитового обращения к портам и регистрам определим несколько
макросов (из их имен все ясно):
#define SetBit(Port, Bit) (Port |= (1 << Bit))
#define ClrBit(Port, Bit) (Port &= ~(1 << Bit))
#define CheckBit(Port, Bit) (Port & (1 << Bit))
Пример использования.
if (CheckBit(Flags1, Fl_1)) // Проверяем установку 0-бита
SetBit(Flags1, Fl_2) // Устан. 1-бит
else ClrBit(Flags1, Fl_3)
E-mail: info@telesys.ru