ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
246588 Топик полностью
testerplus (06.04.2011 14:11, просмотров: 235) ответил fk0 на 26 - 25 = 1; 1 < 10L*2441/1000 ==> лажа.
Лаже не в вычитании и не в сравнении. btemp на каком-то этапе портится. По листингу так: while (timer() - t < (ftime_t)(10L*FTIME_PER_SEC/1000)); 1. timer() - результат - в btemp (кстати, как было установлено, что последнее значение = 26?) 2. btemp = btemp - t - тут по листингу ничего странного, обычное вычитание 3. Сравнение (int16)btemp с (int16)24 - здесь тоже все корректно, обычное знаковое сравнение Прерывание могло возникнуть в любой момент. В нем случайно нет вызова timer()? Там вообще btemp и btemp+1 числятся в списке сохраняемого контекста? PICC18 в некоторых случаях забывает это делать.