Показать сообщение отдельно
Старый 21.07.2019, 23:34   #259
Alex15BV
Пользователь
 
Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
Alex15BV is a jewel in the roughAlex15BV is a jewel in the roughAlex15BV is a jewel in the rough
По умолчанию

Цитата:
Сообщение от oleg707 Посмотреть сообщение
ну если с дефайном все ясно, например, в 3Д принтерах в прошивке всё на них и построено, то с битами сложнее. Короче, надо поиграться, чтобы почувствовать.
Что ж тут сложного? Булево - это "истина" / "ложь", то есть 1/0
А это один бит и есть - так зачем на него тратить байт?
Ардуино - восьмибитный контроллер, он байтами оперирует: вот ему в байты и нужно форматировать данные.
Чтобы 8 флагов хранить в памяти - нужна однобайтная переменная. А именовать биты (и уж тем более пины Ардуино) надо только для восприятия кода, его читаемости - а это дефайн делает. Тупо директива компилятору: везде, где увидишь это имя в коде - подставляй вот эту строчку. То есть ты пишешь
digitalWrite(LED_PIN, HIGH), а в прошивке будет digitalWrite(10, HIGH) - но только без лишней переменной

Для флагов то же самое: вместо твоей именованной переменной будет совершенно обычная запись;
bitSet(FlagRegister1, 0) - то есть "установить в лог. единицу нулевой бит переменной FlagRegister 1"
Alex15BV вне форума   Ответить с цитированием