[an error occurred while processing this directive]
Ответ: Все очень просто
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Anatoly 11 октября 2002 г. 06:46
В ответ на: Начал работать с IAR C 2.26. Компилятор что, побитное обращение к SFR регистрам не берет??? Как это лучше сделать, не подскажете. Как этот бит мне объявить? Thanks заранее отправлено Kimmel 11 октября 2002 г. 05:13

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