Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Суббота
23 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Микроконтроллеры PIC
246582
Топик полностью
fk0
, легенда
(06.04.2011 13:46, просмотров: 181)
ответил
testerplus
на
По листингу все правильно. Скорее всего btemp не сохраняется в прерывании, но модифицируется там (при умножении, например)
26 - 25 = 1; 1 < 10L*2441/1000 ==> лажа.
[ZX]
Ответить
Лаже не в вычитании и не в сравнении. btemp на каком-то этапе портится. По листингу так:
testerplus
(557 знак., 06.04.2011 14:11
)
btemp сохраняется в прерывании (это адрес 0). Иначе бы ничего не работало массово. В функции timer() в отдельную глобальную переменную засунуто возвращаемое значение, оттуда и 26.
-
fk0
(06.04.2011 15:42
)
Забыл сказать, в работающем коде листинг малость другой. Промежуточный результат в переменную сохраняется, а не в W. Здесь где-то ошибка.
-
fk0
(06.04.2011 15:44
)
Поэтому профессионалы PIC не используют :)
-
Ксения
(06.04.2011 14:07
)