Приветствую!
потребовалось перебрать байт по-битово, отправляя на бит порта.
написал в теле цикла:
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?