Главная arrow Начинающим arrow FAQ по языку Си arrow 3. Как правильно сбрасывать флаги в регистрах?  
25.09.2017 г.
Главная
Проекты
Статьи
Начинающим
Архив новостей
Ссылки
Контакты
Поиск
Файлы
Форум
Карта сайта
Авторизация





Забыли пароль?
Ещё не зарегистрированы? Регистрация
Поддержи наш сайт!
Через WebMoney

 R785211844650
 Z210696637574
 E368177590409

Простые устройстваОтличные товары по превосходным ценамОтличные товары по превосходным ценам
3. Как правильно сбрасывать флаги в регистрах? Печать E-mail
Рейтинг: / 4
ХудшаяЛучшая 
Автор ARV   
18.12.2009 г.

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

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

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

TIFR = _BV(TOIE1);

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

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

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

 
« Пред.   След. »
Полезные материалы по сходным темам
Кто на сайте?
Помощь on-line
BannerFans.com