; Включая в исходник нижеприведенный фрагмент, мы уже заранее имеем определенные
; имена для точек входов в прерывания :
.include "m8Adef.inc"

; ***** INTERRUPT VECTORS ************************************************
;.equ	INT0addr	= 0x0001	; External Interrupt Request 0
;.equ	INT1addr	= 0x0002	; External Interrupt Request 1
;.equ	OC2addr	= 0x0003	; Timer/Counter2 Compare Match
;.equ	OVF2addr	= 0x0004	; Timer/Counter2 Overflow
;.equ	ICP1addr	= 0x0005	; Timer/Counter1 Capture Event
;.equ	OC1Aaddr	= 0x0006	; Timer/Counter1 Compare Match A
;.equ	OC1Baddr	= 0x0007	; Timer/Counter1 Compare Match B
;.equ	OVF1addr	= 0x0008	; Timer/Counter1 Overflow
;.equ	OVF0addr	= 0x0009	; Timer/Counter0 Overflow
;.equ	SPIaddr	= 0x000a	; Serial Transfer Complete
;.equ	URXCaddr	= 0x000b	; USART, Rx Complete
;.equ	UDREaddr	= 0x000c	; USART Data Register Empty
;.equ	UTXCaddr	= 0x000d	; USART, Tx Complete
;.equ	ADCCaddr	= 0x000e	; ADC Conversion Complete
;.equ	ERDYaddr	= 0x000f	; EEPROM Ready
;.equ	ACIaddr	= 0x0010	; Analog Comparator
;.equ	TWIaddr	= 0x0011	; 2-wire Serial Interface
;.equ	SPMRaddr	= 0x0012	; Store Program Memory Ready

;.equ	INT_VECTORS_SIZE	= 19	; size in words

.cseg
.org 0x000

; по сему практически весь нижерасположенный закомментированный фрагмент лишен смысла

;rjmp RESET ; Reset Handler
;rjmp EXT_INT0 ; IRQ0 Handler
;rjmp EXT_INT1 ; IRQ1 Handler
;rjmp TIM2_COMP ; Timer2 Compare Handler
;rjmp TIM2_OVF ; Timer2 Overflow Handler
;rjmp TIM1_CAPT ; Timer1 Capture Handler
;rjmp TIM1_COMPA ; Timer1 CompareA Handler
;rjmp TIM1_COMPB ; Timer1 CompareB Handler
;rjmp TIM1_OVF ; Timer1 Overflow Handler
;rjmp TIM0_OVF ; Timer0 Overflow Handler
;rjmp SPI_STC ; SPI Transfer Complete Handler
;rjmp USART_RXC ; USART RX Complete Handler
;rjmp USART_UDRE ; UDR Empty Handler
;rjmp USART_TXC ; USART TX Complete Handler
;rjmp AD ; ADC Conversion Complete Handler
;rjmp EE_RDY ; EEPROM Ready Handler
;rjmp ANA_COMP ; Analog Comparator Handler
;rjmp TWSI ; Two-wire Serial Interface Handler
;rjmp SPM_RDY ; Store Program Memory Ready Handler

;;RESET:
;EXT_INT0:
;; EXT_INT1:
;TIM2_COMP:
;TIM2_OVF:
;TIM1_CAPT:
;TIM1_COMPA:
;TIM1_COMPB:
;TIM1_OVF:
;TIM0_OVF:
;SPI_STC:
;USART_RXC:
;USART_UDRE:
;USART_TXC:
;AD:
;EE_RDY:
;ANA_COMP:
;TWSI:
;SPM_RDY:

;reti

; однако в m8Adef.inc не определена точка начального старта
; для конфигурации "по умолчанию" по сигналу аппаратного сброса
; программа начнет исполняться с адреса 0х000 ( пока пропустим изменения адресации
; таблицы векторов и адреса запуска при помощи BOOTRST и IVSEL
; приняв за должное Reset Address=0х000 а Interrupt Vectors Start Address=0х001 )
; тогда :
RESET:
  rjmp cool_start ;по адресу 0х000 команда безусловного перехода
             ; к началу блока инициализации системы после включения питания
;дальше размещаем команду передачи управления для прерываний по INT1:
   org reset+INT1addr
  rjmp EXT_INT1
; и дабы не напортить в будущем, выполняем
;  обход поля главной таблицы прерываний :
   org reset+INT_VECTORS_SIZE
cool_start:      ; собственно программа "холодного старта"
     ldi r16,low (RAMEND)
     out spl,r16
     ldi r16,high (RAMEND)
     out sph,r16 ; инициализация указателя стека на конец ОЗУ
; этот участок оставляем на усмотрение топикстартера (долго вчитываться в
; специфику инициализации незнакомого кристалла - только вот настройка портов на вывод
; (или ввод) как и настройка прерывания по сигналу на входе INT1 тут явно пропущена):
;RESET:
 ldi R16,0b00001100
 out MCUCR,R16

 ldi R16,0b10000000
 out GICR,R16

 ldi R16,0

 sei



Main1:
 nop
 rjmp Main1


EXT_INT1: inc R16
 out PORTB,R16
 reti