.Include "tn2313def.inc"

.def Tmp=r16 ;Для временного хранения значений

.dseg
Setup: .byte 1 ;Флаг режима настройки

.cseg
.org 0

... ;Тут векторы прерываний

;################################
Reset: ;Начальная инициализация #
;################################
   ldi Tmp, 0b00000101
   out TCCR1B, Tmp1 ;Предделитель таймера 1024

   ldi Tmp, 0xCC
   out OCR1AH, Tmp1 ;Загружаем старший байт компаратора
   out OCR1AL, Tmp1 ;Загружаем младший байт компаратора
   
   ldi Tmp, 0
   sts Setup, Tmp ;Сбрасываем флаг режима настройки
   
   SEI ;Разрешаем прерывания

;#####################
Main: ;Основной цикл #
;#####################

Тут опрашиваю кнопки, если какая-то нажата и флаг настройки не установлен,
то вызываю SetupActivity	  

rjmp Main

;########################################
SetupActivity: ;Войти в режим настройки #
;########################################
   ldi Tmp, 1
   sts Setup, Tmp ;Устанавливаем флаг режима настройки
   
   ldi Tmp, 0
   out TCNT1H, Tmp ;Обнуляем старший байт счетчика
   out TCNT1L, Tmp ;Обнуляем младший байт счетчика
   
   ldi Tmp, 0b01000000
   out TIMSK, Tmp ;Разрешаем прерывание от компаратора таймера 1
rjmp Main

;############################################
TIM1_COMPA: ;Прерывание таймера компаратора #
;############################################
   push Tmp
   In Tmp, SREG
   push	Tmp

   ldi Tmp, 0
   out TIMSK, Tmp ;Запрещаем прерывание от компаратора таймера 1
   sts Setup, Tmp ;Сбрасываем флаг режима настройки

   pop Tmp
   out SREG, Tmp
   pop Tmp
reti