Arduino — функции — биты и байты

Arduino IDE располагает набором функций, позволяющих выполнять операции на битах и байтах. Можно прочитать значение бита или установить его.

Функции highByte() и lowByte()

Функции highByte() и lowByte() позволяют извлекать старший и младший байт соответственно из сохраненного значения. Если мы объявим переменную как int, ее значение будет храниться в двух байтах. Отправка этого значения через последовательный порт требует отправки старшего и младшего байта.

Функция lowByte() даст нам значение младшего байта, тогда как значение highByte() - старшего байта. Синтаксис команд следующий:

int x;
lowByte(x);
highByte(х);

Мы вызываем функции с параметром, который является «большим» (многобайтным), но получаем один байт. Здесь возникает вопрос, что вернет функция в случае, когда в качестве параметра передадим четырехбайтную переменную?

Фактически, функции позволяют нам указывать самый старший и самый младший байт. Это означает, что для четырехбайтового числа мы получим первый или четвертый байт. Второй и третий байт напрямую не доступны. Ниже приведен пример использования функций highByte() и lowByte():

int test = 0xABCD; // 16-бит
long int test2 = 0xABCDEF98 // 32-бита
byte hi, lo; // две переменные 8-бит
hi = highByte(test); // hi = 0xAB
lo = lowByte(test); // lo = 0xCD.
hi = highByte(test2); // hi = 0xAB
lo = lowByte (test2); // lo = 0x98.

Функции bitRead() и bitWrite()

Функция bitRead() позволяет прочитать значение определенного бита в указанной переменной. Мы вызываем ее с двумя параметрами. Первый из них - это имя переменной, значение бита которой мы хотим получить, второй - номер бита для чтения.
Отсчет всегда от нуля, то есть у нас есть бит нулевой, первый, второй и т. д. Функция возвращает значение LOW или HIGH.

Функция bitWrite() позволяет записать определенный бит. Вызывается с тремя параметрами, первый из них - это переменная, второй - это номер бита, а третий - это информация о том, что бит необходимо установить (HIGH) или сбросить (LOW). Примеры использования bitRead() и bitWrite():

byte x=0xF0; // в двоичном 11110000
bitRead(x,3); // функция возвращает LOW
bitRead(x,7); // функция возвращает HIGH
bitWrite(x,1,HIGH); // x = 11110010
bitWrite(x,7,LOW); // x = 01110010

Битовые операции часто используются во время программирования для установки или считывания состояния регистров или выводов на основе сохраненных или переданных данных.

Функции bitSet() и bitClear()

Альтернативным способом изменения состояния (значения) бита для функции bitWrite() - функции bitSet() и bitClear(). В функции bitWrite() в качестве параметра мы задаем установить или сбросить бит. Используя одну из функций bitSet () или bitClear (), мы явно определяем, хотим ли мы, чтобы бит был установлен или сброшен. Вот несколько примеров использования функций bitSet () и bitClear ():

byte a=0xAA; // в двоичном виде 10101010
bitSet(a,6); // а = 11101010
bitClear(а,7); // а = 01101010
bitClear(а,7); // а = 01101010
bitClear(а,6); // а = 00101010
bitSet(a,7); // а = 10101010

Функция bit()

Функция бит () вычисляет значение указанного бита. Ниже примеры:

byte x;
x = bit (0); // x = 1
x = bit (2); // x = 4
x = bit (4); // x = 16
x = bit (7); // x = 128
редактор

Добавить комментарий

Ваш электронный адрес не будет опубликован.

*