не помню точно как таймер 1 работает, но по первому вопросу алгоритм следующий:
ставишь прерывание на переполнение таймера (255 циклов). В прерывании ставишь переменную, считающую количество прерываний. Как только кол-во прерываний равно 3, загружаешь в счетчик таймера 971-255*3 (посмотри, возможно, надо делать поправку на 4 цикла команды загрузки числа в счетчик) и со следующего прерывания у тебя 971 цикл.
по второму вопросу, вроде, проблем не должно быть - на RB0 есть прерывание. запоминаешь цикл, на котором пришел первый импульс, по приходу следующего, если циклов мало - значит 2 импульса вместе, если больше паузы - значит одиночный импуль после паузы...
|