3. Как правильно сбрасывать флаги в регистрах?
Автор ARV   
18.12.2009 г.

Биты в некоторых регистрах специальных функций сбрасываются в ноль путем записи в них единицы. Как следует поступать для достижения оптимального результата? После прочтения FAQ №1 можно предположить, что следует поступить так (для примера возьмем регистр флагов запросов прерывания таймеров TIFR):

TIFR |= _BV(TOIE1); // сброс флага TOIE1

Однако такой вариант приведет к избыточному коду, двоичное ИЛИ требуется лишь для тех случаев, когда надо ИЗМЕНИТЬ значение одного бита, НЕ ЗАТРОНУВ остальные. В случае с TIFR запись нулевых битов никак не повлияет на содержимое регистра, поэтому следует поступать просто, без всяких битовых операций:

TIFR = _BV(TOIE1);

Добавить в любимые (0) | Просмотров: 7197

  Коментарии (2)
 1 Написал(а) Igor, в 21:51 19.12.2009
решил почитать, подумал что для начинающих..... 
а что такое "флаги" ? и почему это слово ест в заголовке но его нет дальше в объяснении ? :cry
 2 Написал(а) ARV, в 20:28 27.12.2009
невнимательно читаете - есть такое слово!!! :)

Только зарегистрированные пользователи могут оставлять коментарии.
Пожалуйста зарегистрируйтесь или войдите в ваш аккаунт.