Вы не вошли.
В №2 2006 есть макрос:
#define WAIT { while(tm==0); tm=0; count++; }
Вопрос :
1.если соблюдается условие (tm==0) то выполнются оба оператора или только tm=0;
2.если условие не истино - оператор count++; выполняется?
пример использования макроса:
while((bit_is_set(PIND, RC5))&&(count<16)) WAIT;
Отредактировано vovan (04.05.2006 22:04:32)
Вне форума
отбой, разобрался.
Вне форума
отбой, разобрался.
Хорошо, что разобрался. А интересно, когда N2/2006 поступил к подписчикам Тулы?
Вне форума
В №2 2006 есть макрос:
#define WAIT { while(tm==0); tm=0; count++; }Вопрос :
1.если соблюдается условие (tm==0) то выполнются оба оператора или только tm=0;
2.если условие не истино - оператор count++; выполняется?пример использования макроса:
while((bit_is_set(PIND, RC5))&&(count<16)) WAIT;
1. Макроопределение WAIT было введено только с целью сокращения журнального места (чтобы листинг поместился на одной
странице). Это не рекомендация к действию, а образец того, какие иезуитские конструкции могут встретиться в реальных
Си-программах+
2. Если серьезно, то строка 56 после подстановки макроса и форматирования текста должна выглядеть следующим образом:
while((bit_is_set(PIND, RC5))&&(count<16)) //Строка 56, проверка RC5=лог.1 и счетчик <16
{ while(tm==0); //Ждать очередного прерывания (каждые 111 мкс)
tm=0; //После прерывания tm=1 в строке 21, поэтому обнуляем tm
count++; //Увеличиваем на единицу счетчик и переходим вновь к строке 56
} //
Итого происходит задержка времени длительностью 16х111 мкс, при этом известно, что состояние линии RC5 постоянно было
в лог.1. Если за указанный промежуток времени из-за помехи состояние линии RC5 перешло бы в лог.0, то случился бы досрочный выход из цикла while в строке 56, при этом счетчик count был бы меньше 16, что является признаком помехи.
3. Теперь ясны ответы. Если условие (tm==0) соблюдается, то не выполняется ни один из операторов,
программа зацикливается внутри while(tm==0). Если условие не истинно, то последовательно выполняются операторы tm=0, затем count++ и далее опять на строку 56.
Вне форума
Хорошо, что разобрался. А интересно, когда N2/2006 поступил к подписчикам Тулы?
к сожалению на это полугодие я не подписался, а статью приобретал у Вас.
Вне форума
1. Макроопределение WAIT было введено только с целью сокращения журнального места ...
Просто не обратил внимание на точку с запятой после оператора while(tm==0); и считал что {tm=0; count++;} являютса его телом.
Спасибо за ответ, но жаль что про это ничего не написано в статье.
Вне форума
Еще непонятно назначение строки 66
for (j=0; j < 12; j++) WAIT;
Вне форума
к сожалению на это полугодие я не подписался, а статью приобретал у Вас.
Через www.radiohobby.ldc.net/bestbuy.html ? Можно и так, но имхо лучше всетаки оформить подписку - она как раз сейчас в разгаре на второе полугодие.
Вне форума
Еще непонятно назначение строки 66
for (j=0; j < 12; j++) WAIT;
какую роль играет этот цикл из 13 временных интервалов по 111 секунд для декодирования RC-5?
Вне форума
Через www.radiohobby.ldc.net/bestbuy.html ? Можно и так, но имхо лучше всетаки оформить подписку - она как раз сейчас в разгаре на второе полугодие.
сегодня подписался
Вне форума
[ Сгенерировано за 0.032 сек, 7 запросов выполнено - Использовано памяти: 593.12 Кбайт (Пик: 643.48 Кбайт) ]