роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Описание: правильность описаний УСЛОВИЙ на Си для AVR
Not_invented Post Id


Рядовой


Сообщений всего: 0
Дата рег-ции: Авг. 2012  



Помогите разобраться с правильностью условий, с принципом работы условий.




if (!(PINC & (0<<PINC1)))
{ // (PIND0 = 0)
PORTA |= _BV(PA5);
}

if (PINC & (0<<PINC1))
{
PORTA &= ~_BV(PA5);
}




объясните пожалуйста как это работает...
 
 Top
JohnAA Post Id


Рядовой


Сообщений всего: 9
Дата рег-ции: Июль 2012  



if (!(PINC & (0<<PINC1)))//
{ // (PIND0 = 0)
PORTA |= _BV(PA5);
}
if (PINC & (0<<PINC1))
{
PORTA &= ~_BV(PA5);
}

(0<<PINC1) всегда будет = 0

if (!(PINC & 0)) & логическое умножение (PINC & 0) всегда будет = 0

if (!0) - инверсия результата условие всегда выполняется

второй вариант без !

всегда не выполняется т.к. if (0)

я думаю здесь ошибка в (0<<PINC1) значение 0 сдвигать на PINC1 разрядов что будет всегда давать 0
(Добавление)
p.s. в языке C/C++ условие if будет верно при любом значении отличном от 0
например if(5) будет выполняться.
 
 Top
Страниц (1): [1]
« Микроконтроллеры »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru