[an error occurred while processing this directive]
Ответ: Немножко обшибся c именем байта..
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Anatoly 11 октября 2002 г. 07:09
В ответ на: Ответ: Все очень просто отправлено Anatoly 11 октября 2002 г. 06:46

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(Flags, Fl_1)) // Проверяем установку 0-бита
SetBit(Flags, Fl_2); // Устан. 1-бит
else ClrBit(Flags, Fl_3)


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru