Все ли эти битовые настройки означают одно и то же?
ADMUX = ADMUX | _BV(REFS); // несоставное побитовое ИЛИ
ADMUX |= _BV(REFS0); // #define _BV(бит) (1 << (бит))
ADMUX |= bit(REFS0); // # определить бит(b) (1UL << (b))
bitSet(ADMUX, REFS0); // #define bitSet(значение, бит) ((значение) |= (1UL << (бит)))
sbi(ADMUX, REFS0); // устаревшая сборка?
ADMUX |= (1 << REFS0); // оператор сдвига
ADMUX |= (1 << 7); // бит 7 называется REFS0
ADMUX |= 0b10000000; // корзина
ADMUX |= 0x80; // шестнадцатеричный
ADMUX |= 128; // уб
*в нормальных условиях 8-битной Arduino?
@Gaai, 👍1
Обсуждение1 ответ
Лучший ответ:
▲ 2
Вы уже получили ответ в комментариях, но, чтобы еще раз убедиться, Я попытался скомпилировать все эти заявления для Uno, и они получили все переведены в точно такой же машинный код. Ну, почти: я должен был сделать некоторые мелкие корректировки, которые, как мне кажется, не имеют отношения к сути ваш вопрос. Для полноты картины я изменил следующее:
Я заменил REFS0 на REFS1: на Uno REFS0 — это бит 6, а REFS1 бит 7.
Я заменил REFS на REFS1, так как первый не определен.
Я #включил
<compat/deprecated.h>
, иначе я получаю сообщение об ошибке «'sbi
' не был объявлен в этой области».
,
@Edgar Bonet
Смотрите также:
- avrdude ser_open() can't set com-state
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Ведомое устройство Arduino с двумя мастерами, использующими одну и ту же шину I2C?
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- В чем разница между delay() и delaymicroseconds()
- Программирование Arduino на Паскале?
- Как синхронизировать несколько ардуино?
- Arduino nano KiCad символы
Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат](https://chat.stackexchange.com/rooms/139514/discussion-on-question-by-gaai-do-these-bit-settings-all-mean-the-same) ., @Nick Gammon