Вот код настройки векторов.
Код: Выделить всё
;Настройка прерываний.------------------------------------------------------------------------------------------------------------------
.cseg ;Выбираем память програм.
.org 0 ;Ставим на 0.
;Перечисляем все возможные вектора прерываний, чтобы в случае сбоя, закрыть все ненужные.
rjmp RESET ;Внешний сброс, сброс при подаче питания,
;сброс при недопустимом снижении питания,
;сброс сторожевым таймером
rjmp INT00 ;Запрос на внешнее прерывание 0.
rjmp INT10 ;Запрос на внешнее прерывание 1.
rjmp TIMER2_COMP ;Срабатывание компаратора таймера-счетчика 2.
rjmp TIMER2_OVF ;Переполнение таймера-счетчика 2.
rjmp TIMER1_CAPT ;Захват фронта таймером-счетчиком 1.
rjmp TIMER1_COMPA ;Срабатывание компаратора А таймера счетчика 1.
rjmp TIMER1_COMPB ;Срабатывание компаратора В таймера-счетчика 1.
rjmp TIMER1_OVF ;Переполнение таймера-счетчика 1.
rjmp TIMER0_OVF ;Переполнение таймера-счетчика 0.
rjmp SPI_STC ;Завершение последовательной передачи интерфейсом SPI.
rjmp USART_RXC ;Завершение приема УСАПП.
rjmp USART_UDRE ;Регистр данных УСАПП свободен.
rjmp USART_TXC ;Завершение передачи УСАПП.
rjmp ADC_ADC ;Завершение преобразования АЦП.
rjmp EE_RDY ;Готовность EEPROM.
rjmp ANA_COMP ;Аналоговый компаратор.
rjmp TWI ;Двухпроводный Последовательный интерфейс.
rjmp SPM_RDY ;Готовность записи Памяти программ.
;RESET, TIMER1_COMPA, TIMER2_OVF: - нужные прерывания. Остальные завершаем.
INT00:
INT10:
TIMER2_COMP:
TIMER1_CAPT:
TIMER1_OVF:
TIMER0_OVF:
TIMER1_COMPB:
USART_RXC:
USART_UDRE:
USART_TXC:
ADC_ADC:
EE_RDY:
ANA_COMP:
TWI:
SPI_STC:
SPM_RDY:
reti
Код: Выделить всё
;Настройка 1-го таймера - раз в секунду и 2-го 96 раз в секунду.
ldi Temp, 0x0D
out TCCR1B, Temp
ldi Temp, 0x20
out OCR1AL, Temp
ldi Temp, 0x0A
out TCCR2, Temp
ldi Temp, 0x2a
out OCR2, Temp
;Настройка прерываний по таймерам.
ldi Temp, 0x50
out TIMSK, Temp
Код: Выделить всё
TIMER2_OVF:
in temp, PIND
com temp
out PORTD, temp
reti


