Сброс и обработка прерываний.
В AT90S2313 предусмотрены 10 источников прерываний. Эти прерывания и сброс имеют различные векторы в области памяти программ. Каждому из прерываний присвоен отдельный бит разрешающий данное прерывание при установке бита в 1, если бит I регистра состояния разрешает общее обслуживание прерываний.
Самые младшие адреса памяти программ определены как векторы сброса и прерываний. Полный список векторов прерываний приведен в таблице 2. Этот список определяет и приоритет различных прерываний. Меньшие адреса соответствуют более высокому уровню приоритета. Самый высокий уровень у сброса, следующий приоритет у INT0 - внешнего запроса прерывания 0 и т.д.
Таблица 2. Сброс и векторы прерываний.
| Номер вектора | Адрес | Источник | Описание прерывания |
| 1 | $000 | RESET | Вывод сброса и сброс от сторожевого таймера |
| 2 | $001 | INT0 | Внешнее прерывание 0 |
| 3 | $002 | INT1 | Внешнее прерывание 1 |
| 4 | $003 | TIMER1 CAPT1 | Захват таймера/счетчика 1 |
| 5 | $004 | TIMER1 COMP1 | Совпадение таймера/счетчика 1 |
| 6 | $005 | TIMER1 OVF1 | Переполнение таймера/счетчика 1 |
| 7 | $006 | TIMER0,OVF0 | Переполнение таймера/счетчика 0 |
| 8 | $007 | UART RX | Последовательный порт: прием закончен |
| 9 | $008 | UART UDRE | Последовательный порт: регистр данных пуст |
| 10 | $009 | UART TX | Последовательный порт: передача закончена |
| 11 | $00A | ANA_COMP | Аналоговый компаратор |
Чаще всего используется следующая установка векторов прерываний в программе:
Адрес Метка Код Комментарий
$000 rjmp RESET ; Обработка сброса
$001 rjmp EXT_INT0 ; Обработка IRQ0
$002 rjmp EXT_INT1 ; Обработка IRQ1
$003 rjmp TIM_CAPT1 ; Обработка захвата таймера 1
$004 rjmp TIM_COMP1 ; Обработка совпадения таймера 1
$005 rjmp TIM_OVF1 ; Обработка переполнения таймера 1
$006 rjmp TIM_OVF0 ; Обработка переполнения таймера 0
$007 rjmp UART_RXC ; Обработка приема байта
$008 rjmp UART_DRE ; Обработка освобождения UDR
$009 rjmp UART_TXC ; Обработка передачи байта
$00A rjmp ANA_COMP ; Обработка аналогового компаратора
$00B MAIN: <instr> xxx ; Начало основной программы