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