суббота, 2 декабря 2023 г.

Шпаргалка: работа с разрядами на языке С

 



    Запись лог. 1 в разряды с обнулением остальных разрядов

n = 0b00010110

или

n = (1 << 4) | (1 << 2) | (1 << 1);


    Запись лог.1 в разряды без изменения остальных разрядов

n |= (1 << 4) | (1 << 2) | (1 << 1);


    Запись лог. 1 в разряд

(PORTB |= _BV(PIN))


    Запись лог. 0 в разряд

(PORTB &= ~_BV(PIN))


    Запись лог.0 в разряды без изменения остальных разрядов

n &= ~ (1 << 2) & ~(1 << 3) & ~(1 << 4)


    Запись лог.0 в разряды c с записью лог.1 во все остальные

n = ~ (1 << 2) & ~(1 << 3) & ~(1 << 4)


    Проверка некоторого разряда переменной на наличие лог. 0

if (~n & (1 << 4)) {Оператор 1;} else {Оператор 2;}  

или

if (0==(n & (1 << 4) {Оператор 1;} else {Оператор 2;}


    Проверка некоторого разряда переменной на наличие лог. 1

if (0 != (n & (1 << 4))) {Оператор 1;} else {Оператор 2;}

или

if (n & (1 << 4)) {Оператор 1;} else {Оператор 2;} 

или

if ((n $ (1 << 4)) == (1 << 4)) {Оператор 1;} else {Оператор 2;}

или при подключенном заголовочном файле <avr/sfr_defs.h>:

if (bit_is_set(n,4))


    Ожидание появления лог.1 в некотором разряде

while (~n & (1<<4));

или 

while (!(n & (1<<4)));

или при подключенном заголовочном файле <avr/sfr_defs.h>:

loop_until_bit_is_set (n,4);

Цикл ожидания будет выполняться до тех пор пока разряд =0,

Как только разряд станет = 1, произойдет выход из цикла




Комментариев нет:

Отправить комментарий