Ответ на этот вопрос весьма объемен.
Полная форма условного оператора:
if( /* выражение */ )
{
/* код1 */
}
else
{
/* код2 */
}
/* код3 */
Если выражение в круглых скобках истинно, то выполняется код1 и сразу за ним код3. Если выражение в круглых скобках ложно, то выполняется код2 и сразу за ним код3.
Сокращенная форма условного оператора:
if( /* выражение */ )
{
/* код1 */
}
/* код3 */
Если выражение в круглых скобках истинно, то выполняется код1 и сразу за ним код3. Если выражение в круглых скобках ложно, то сразу выполняется код3.
Выражение в круглых скобках ложно, если в результате его вычисления получен ноль. Все, что не ноль является истинным.
Пара примеров:
if( 1 )
{
PORTD = 0b00000001;
}
else
{
PORTD = 0b00000010;
}
PORTD = 0b00000000;
При выполнении этого кода на PD0 будет на несколько тактов установлена 1, а затем 0. На PD1 никогда не будет 1.
if( 0 )
{
PORTD = 0b00000001;
}
else
{
PORTD = 0b00000010;
}
PORTD = 0b00000000;
При выполнении этого кода на PD1 будет на несколько тактов установлена 1, а затем 0. На PD0 никогда не будет 1.
Чтобы узнать, что там на ножке микроконтроллера разработчики придумали специальные регистры: PINB для порта B, PIND для порта D и т.д.
if( PINB )
{
PORTD = 0b00000001;
}
else
{
PORTD = 0b00000000;
}
Если на порту В на всех ножках 0, то на PD0 будет 0. Если хотябы на одной из ножек установить 1, то на PD0 также будет 1.
Если я сказал что-то понятное, намекни и тогда я продолжу. |