Когда производитель реализовывает в своём устройстве несколько команд телеуправления в одном регистре, корректно работать с этим получится только с использованием доработанной 16 функции (bit-wise).
В чём суть: функция управляет одним битом в регистре, не затрагивая и не сбрасывая состояние других битов. Релазовано это было с помощью так называемой "маски".
Функция сначала считывает всё содержимое регистра, накладывает на это значение маску по "И", затем накладывает команду ТУ по "ИЛИ". Итоговое значение отправляется в регистр.
В примере выше управление происходит через взвод 3го бита (4го, если считать и нулевой) и затем сброс всего регистра в 0. Сбросить соседние биты в 0 при команде ТУ ОТКЛ не позволяет как раз маска. В табличках ниже показана двоичная логика работы команды ВКЛ и ВЫКЛ.
Дано: уже взведены 2, 4, 5 биты. Не взведены 0, 1 и 3. Неиспользуемые биты: 6 и 7.
Подаётся команда ТУ ВКЛ, взводится 3 бит.
Результат: взведены 2, 3, 4, 5 биты.
Подаётся команда ТУ ВЫКЛ, Маска не даёт сбросить соседние биты, 0 вписывается только в 3 бит.
Результат: взведены 2, 4, 5 биты.
В поля "Данные для записи" и "Маска" вписываются значения в hex, 16-ричной системе счисления. Количество байтов (октетов) должно быть кратно 2. Всплывающая подсказка поможет разобраться.
Если старшие биты не используются, их нужно заполнить нулями. В зависимости от регистра, байтов будет 2 или 4.
В поле "Маска" в двоичном виде единицы должны стоять на тех позициях, которые работа команды ТУ не должна затрагивать.