Теория: Битовые операции и управление выводами через регистры.
- Войдите на сайт для отправки комментариев
Пнд, 06/01/2014 - 17:04
Как применяются битовые операции в arduino?
Читал статью "Прямое управления выходами через регистры микроконтроллера Atmega". Там применяются битовые операции. Встречал там и тут примеры разных операций, но не могу найти как сделать "НЕ" для нужных регистров.
Может быть кто-то подскажет, где посмотреть толковую инструкцию на русском языке?
для всей группы нашел: PORTB = ~PORTB;
ищу как сделать для отдельных контактов.
Cyberlib Library
Для 328 http://thechronosproject.com/?ddownload=1579
Там всё это уже есть
http://arduino.cc/en/Reference/BitwiseXorNot
PORTB ^= 1<<PB5;
Пасиба.
Почему-то когда я задаю вопрос на форуме, я сразу же нахожу путь решения. Наверное это связано со свойствами ноосферы.
Я тоже надумал операцию XOR
что-то вроде этого: PORTB = PORTB ^ B00001000;
trembo, благодарю за библиотеку, изучу,
maksim, благодарю за наводку.
Вот мой вариант. Надо добавить в начало скетча или в какой-либо .h-файл, который затем подключать через #include "ports_fast.h"
строчки с побитовым сдвигом мне пока не понятны.
Если кто-то наткнется на тему в поисках ответов на подобные вопросы, укажу источники (рус), которыми сам пользуюсь:
http://arduino.ru/Tutorial/Upravlenie_portami_cherez_registry
http://makesystem.net/?p=896
http://fanatnauki.ru/index.php?option=com_content&view=article&id=49&Ite...
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_...
http://kolonitsky.org/blog/2011/05/bitmask-into/
Что ж там непонятного? Простая арифметика школьный курс. Следующие записи эквивалентны:
byte a, b;
a = b << 1;
ну не понятно. что за знак "<<" ? Что он делает?
Битовый сдвиг
Как на языке Си записать более элегантно (специфично) аналог такой последовательности команд:
Одной командой нельзя И установить И сбросить биты. Ни в С, ни в Асм. Двумя - пожалуйста.
Спасибо за отклик. Пока занимался другими делами , придумал такое: