3. Как правильно сбрасывать флаги в регистрах? |
Автор ARV | ||||||
18.12.2009 г. | ||||||
Биты в некоторых регистрах специальных функций сбрасываются в ноль путем записи в них единицы. Как следует поступать для достижения оптимального результата? После прочтения FAQ №1 можно предположить, что следует поступить так (для примера возьмем регистр флагов запросов прерывания таймеров TIFR): TIFR |= _BV(TOIE1); // сброс флага TOIE1 Однако такой вариант приведет к избыточному коду, двоичное ИЛИ требуется лишь для тех случаев, когда надо ИЗМЕНИТЬ значение одного бита, НЕ ЗАТРОНУВ остальные. В случае с TIFR запись нулевых битов никак не повлияет на содержимое регистра, поэтому следует поступать просто, без всяких битовых операций: TIFR = _BV(TOIE1); Добавить в любимые (0) | Просмотров: 8393
Только зарегистрированные пользователи могут оставлять коментарии. |
« Пред. | След. » |
---|