Ох... Да посмотрел я весь код, что же Вы так недооцениваете-то меня... И надо оно Вам, что бы кто-то рассказывал как Ваш же код работает... Да как хотите...
1. Строка Config Timer1 = Timer , Prescale = 256 запускает таймер. Вот прошагали эту строчку и таймер уже тикает. С этим понятно.
2. Ковыряемся в основном цикле.
3. Нажимаем кнопку на прерывании (допустим, INT0)
4. Прерывание было разрешено, значит переходим на метку But1.
- Отрабатываем задержку 100 мс
- Сбрасываем сторожевой пес
- Запускаем Таймер1 (а он уже запущен, ему эта команда глубоко до голой жопы, его и не останавливали)
- Ну да и ладно, мы дальше проверяем, счетный регистр равен или больше &HFFFF ( While Timer1 >= &HFFFF ). Ну больше &HFFFF (65535) он быть не может, 16-ти битный все же. Куда ему больше-то...
- А тут два варианта. Либо мы выловили значение менее 65535 (тогда условие нарушено, и будет выполнен оператор после Wend (то бишь выход из прерывания)). Либо удача на нашей стороне и мы четко нажали кнопку когда в счетном регистре РОВНО 65535. Тогда попадаем в цикл и выполняем его...
- А дальше хоть полтора часа удерживайте кнопку, ничего не изменится. Не будет перепада - не будет и события. Уйдем в главный цикл и будем себе там сидеть, пока кнопку не отпустим и снова не нажмем...
Igor_67 писал(а):Думаю, там нужно только поменять конфигурацию внешних прерываний, т.е., сделать Config INT0 = Rising Config INT1 = Rising, и тогда все дальнейшее становится понятно.
Да ну? Вроде как, та же жопа, только сверху...

"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон