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

 R785211844650
 Z210696637574
 E368177590409

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

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

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

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

TIFR = _BV(TOIE1);

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

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

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

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