реклама на сайте
подробности

 
 
> PIC. C18. Установка бита порта более чем единицей.
KilkennyCat
сообщение Jun 30 2013, 15:53
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 26-11-11
Из: Липецк
Пользователь №: 68 533



Приветствую!

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

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

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?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01555 секунд с 7
ELECTRONIX ©2004-2016