Побитовые операции | Микроконтроллеры с нуля #11

preview_player
Показать описание
Побитовые операции широко применяются при программировании микроконтроллеров любых типов и серий. Побитовые операции – это базовый арсенал любого программиста микроконтроллеров, так сказать, несгораемый бонус или навык, который одинаково применим для всех типов микроконтроллеров, поскольку используется чистый синтаксис языка Си. С помощью побитовых операций можно как проверять состояние любого отдельного или нескольких бит, так и изменять состояние этих бит не затрагивая остальные биты. С помощью такого подхода остальные биты остаются нетронутыми, то есть не утрачивают информацию, хранящуюся в них. Побитовые операции образуются из логических операций и операций сдвига, подробно рассмотренных в предыдущем видео.

Ссылки на покупку полезных элементов, необходимых для успешного изучения программирования микроконтроллеров AVR.

#ПобитовыеОперации #ПрограммированиеМикроконтроллеров #AVR #ATmega8
Рекомендации по теме
Комментарии
Автор

Вот хорошая серия роликов... но не без ложки дегтя в этом ролике.
В начале у нас в PORTD записано число 0001 1100.
Рассмотрим пример: PORTD = PORTD | (1<<0)
(1<<0) - нужно читать как: в числе 1, делаем побитовый сдвиг на ноль битов влево. Т.е. число 1 в двоичном виде: 0000 0001, делаем сдвиг на 0 влево, получаем 0000 0001.
Далее выполняем ИЛИ между числом которое сейчас записано в PORTD (00011100) и тем что получилось после сдвига


00011100
| (наше ИЛИ)


00011101

т.е. то что стоит ДО сдвига по битам, это число в КОТОРОМ делаем сдвиг. А потом, применяем |, &, ~ к другому числу. ^ инвертирует результат.

bozhkou
Автор

Друг ты не представляешь на сколько ты красавчик!! :))

race-Vulcan
Автор

Очень прошу выпустить 2-ю часть этого урока. Ибо идти дальше не вижу смысла. Это база. Судя по комментам тема актуальна для многих.

codefinder
Автор

ВО! Теперь я понял почему на авто делают управление по массе! А то встречались какие-то невнятные объяснения. Спасибо за полезную инфу.

microsoft
Автор

Самые лучшее объяснение для начинающих. Все остальные многое упускают.

АндрейИванов-еот
Автор

Спасибо огромное!Самые толковые и понятные уроки по микроконтроллерам Удачных Вам проектов..

aleksivanov
Автор

Автор просто молодец !!! Долго я искал такое понятное видео.

ЄвгенБойко-рв
Автор

Огроомное вам спасибо за предоставленный вам подробный урок!!!!

Тесла-фв
Автор

Здравствуйте. Спасибо Вам за ваши труды. Всё очень подробно объясняете.

deceiveitself
Автор

Гутт!!!
Хоть кто-то рассказал как менять один бит

МеняЗовутМитяйРаспздяйВторой
Автор

вот как надо объяснять!! Автор, спасибо!

engineernotebook
Автор

if и while не взаимозаменяемы. if выполняется один раз, а while будет проверяться каждый раз, как только указатель доберется до конца тела while в коде. Т.е. в постоянном цикле. if в коде используется для разветвления программы, а while для ее зацикливания.

AndreyChigisheff
Автор

Алгоритмика очень увлекательная дисциплина. С детства ее обожаю..

DrGeorgiy
Автор

спасибо за уроки хорошие. может что и упустили, как нам про сброс в ноль, но мне очень все нравиться

vitalyivanov
Автор

Красавчик! Всё четко и ясно!!!! Восхищаюсь!))))

ac-alex
Автор

Вы эти светодиоды установите в трафарет из картона например. И подпишите х0, х1 .... не надо будет считать каждый раз и нам наглядно будет!. но так чтобы они не торчали высоко. А то засвечивает друг друга.

Биба-рн
Автор

Спасибо за уроки, очень хорошо объясняете.Но по моему тут ошибка в разборе ожидания сброса или установки в цикле while . Вам не кажется что нужно наоборот.while (~PINB & (1<<0)) - это мы ждем появления 0, а while (PINB & (1<<0)) - это мы ждем появление 1? Если я не прав прошу извинить.Но как то по другому не получается зайти в цикл.

ПавелИванцов-бл
Автор

Здравствуйте! Очень хорошо все объясняете. Не могу только разобраться, как сделать операции с несколькими кнопками, чтобы команды с них не влияли друг на друга. У меня от нажатия мигают по частоте, видимо кольцуются команды. Что делать не подскажете? К слову я совсем новичок, только по видео и научился.

_
Автор

Совершенно непонятно откуда вдруг берется выражение 1<<0, откуда взялась единица сдвигаемая на нулевую позицию?

catcher
Автор

Странно, у меня код со знаком инверсии работает, а с "восклицательным знаком и равно" - не работает! Считывает сходу как будто кнопка уже нажата. Почему так? (причем в Протеус все варианты работают корректно, а в реальном железе нет; вместе с тем, в реальном железе знак инверсии и просто восклицательный знак выполняются корректно)

РоманАнатолійович