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





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

 R785211844650
 Z210696637574
 E368177590409

или
пополни нашу копилку



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

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

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

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

TIFR = _BV(TOIE1);

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

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

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

 
« Пред.   След. »
Полезные материалы по сходным темам
Кто на сайте?
Сейчас на сайте находятся:
7 гостей и 1 пользователь
  • Cheeeper
Помощь on-line