Простите за вопрос не совсем по теме контроллеров, но по близкой...
Скажите, почему не работает следующий код:
Код: Выделить всё
PORTD = 0b11000011;
tmp=0;
while(1){
tmp++;
if (tmp>3)tmp=0;
PORTD = PORTD & (0b11000011 | (1<<(2+tmp)) );
}
На практике творится что попало.
Либо, подскажите другой способ, пожалуйста.
Только просьба, тупой перебор битов порта не предлагать. Нужно именно по формуле, смещая огонек в зависимости от значения tmp...
PS: Компилятор CVAVR
PPS: Не знаю, важно ли это, но PORTD = PORTD & (0b11000011 | (1<<(2+tmp)) ); вызывается из прерывания таймера.


