Цитата
Вопрос на засыпку: откуда вы знаете, что ваш обработчик прерывания по таймеру 0 работает?
цифры на индикаторе меняются. Но очень быстро.
Код
void interrupt isr (void)
{
if (T0IF)
{
while (tmp100 < 100) // выполняется до тех пор, пока истинно (tmp100 < 100)
{
T0IE = 0; // Запрет прерываний по переполнению TMR0
tmp100 = tmp100 + 1; // прибавление до 100 (в сумме 1 сек)
TMR0 = TMR0 + 100; // предзагрузка TMR0
PS2 = 1; // bit 2 Настройка предделителя
PS1 = 0; // bit 1 Настройка предделителя
PS0 = 1; // bit 0 Настройка предделителя
GIE = 1; // разрешены все немаскированные прерывания
T0IF = 0; // сброс флага прерывания по переполнению TMR0
T0IE = 1; // Разрешение прерывания по переполнению TMR0
}
time1 = time1 + 1; // счет сотен циклов TMR0. Это число выводится 7-сегментный индикатор.
tmp100 = 0; // обнуление счетчика
}
}
где-то ошибка... Но где?
Цитата
Отладка в железе может быть быстрее только при наличии железного отладчика или продуманного и отлаженного самопального способа общения с программой. У Вас нет ни того, ни другого, поэтому и тычетесь наугад в потёмках.
В процессе тыканья отрабатываю самопальный способ. Всего-то надо 2 таймера запустить.
Цитата
Я не понимаю, почему Вы упорно не желаете отлаживать свои программы в симуляторе МПЛаба
нет времени и смысла разбираться, как он работает. (Там наверняка свои глюки есть. Вот будет смеху, если в в симуляторе МПЛаба все заработает, а в железе - нет.) Ради запуска 2-х таймеров?! В моей задаче точность не нужна. Всегда можно положить на таймеры и сделать простым суммированием машинных циклов.