Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PIC. C18. Установка бита порта более чем единицей.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
KilkennyCat
Приветствую!

потребовалось перебрать байт по-битово, отправляя на бит порта.

написал в теле цикла:

if (a &(1<<i)) // a - перебираемый байт, i - счетчик
SDIOdata = 1;
else
SDIOdata = 0;

работает, но... как программисту неконтроллеров, сразу захотелось оптимизации и результат:

SDIOdata = (a &(1<<i));

не работает.
шел дальше:

SDIOdata = ((a &(1<<i)) != 0);

работает.
эадумался, присвоил биту порта 0х80 и 0х81 - в первом случае прилетает на ногу порта 0, во втором 1

в итоге:

SDIOdata = (a>>i);

и вопрос: если я устанавливаю бит порта числом более 1, правильно ли я понимаю, что бит порта примет значение младшего бита этого числа? Это общая практика, или особенность компилятора С18?
Fujitser
Цитата(KilkennyCat @ Jun 30 2013, 21:53) *
правильно ли я понимаю, что бит порта примет значение младшего бита этого числа? Это общая практика, или особенность компилятора С18?


Очевидно, это так. Всё вполне логично. Это общая практика, как я понимаю.
KilkennyCat
Спасибо за ответ. Просто мне казалось, что логика типа 0 - это ноль, все что больше - 1.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.