;обработка внешних прерываний INT0 и INT1
.include "C:\incfiles\m8def.inc"

;обзовем регистры
.def	Temp	=R16

;Сегмент кода
.cseg
.org 0

;Определяем вектора прерываний
rjmp RESET			;External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
rjmp INT_0			;External Interrupt Request 0
rjmp INT_1 			;External Interrupt Request 1
rjmp TIMER2_COMP 	;Timer/Counter2 Compare Match
rjmp TIMER2_OVF 	;Timer/Counter2 Overflow
rjmp TIMER1_CAPT 	;Timer/Counter1 Capture Event
rjmp TIMER1_COMPA	;Timer/Counter1 Compare Match A
rjmp TIMER1_COMPB 	;Timer/Counter1 Compare Match B
rjmp TIMER1_OVF 	;Timer/Counter1 Overflow
rjmp TIMER0_OVF 	;Timer/Counter0 Overflow
rjmp SPI_STC 		;Serial Transfer Complete
rjmp USART_RXC 		;USART, Rx Complete
rjmp USART_UDRE 	;USART Data Register Empty
rjmp USART_TXC 		;USART, Tx Complete
rjmp ADC_CC 		;ADC Conversion Complete
rjmp EE_RDY 		;EEPROM Ready
rjmp ANA_COMP 		;Analog Comparator
rjmp TWI			;Two-wire Serial Interface
rjmp SPM_RDY 		;Store Program Memory Ready



;RESET			: ret
;INT_0			: ret
;INT_1 			: ret
TIMER2_COMP 	: ret
TIMER2_OVF 		: ret
TIMER1_CAPT 	: ret
TIMER1_COMPA	: ret
TIMER1_COMPB 	: ret
TIMER1_OVF 		: ret
TIMER0_OVF 		: ret
SPI_STC 		: ret
USART_RXC 		: ret
USART_UDRE 		: ret
USART_TXC		: ret
ADC_CC 			: ret
EE_RDY 			: ret
ANA_COMP 		: ret
TWI				: ret
SPM_RDY			: ret


RESET:
	ldi Temp,high(RAMEND)		;настройка стека
	out SPH,Temp 				
	ldi Temp,low(RAMEND)
	out SPL,Temp
	
	ldi Temp,(1<<SE)			;Разрешаем режим сна-sleep
	out MCUCR, Temp
	
	ldi Temp, 0b00000000		
	out DDRD, Temp
	
	ldi Temp, 0b11111111		
	out DDRB, Temp
	
	ldi Temp, 0b11000000		;разрешение прерываний INT0 и INT1
	out GICR, Temp

	ldi Temp, 0b10000000
	out MCUCR, Temp				;INT0 и INT1 по низкому уровню

	ldi Temp, 127				;сважность 2
	out OCR2, Temp
	ldi Temp, 0b01101001		;настройка таймера 2
	out TCCR2, Temp
	ldi Temp, 0b00000000		;прерывание по переполнению таймера 2 нет
	out TIMSK, Temp
	sei

loop: rjmp loop

INT_0:
in Temp, OCR2
cpi Temp, 254
breq str
inc Temp
out OCR2,Temp
sei
rjmp loop


INT_1:
in Temp, OCR2
cpi Temp, 1
breq str
dec Temp
out OCR2,Temp
sei
rjmp loop

str:	;ldi Temp, 0b11000000		;разрешение прерываний INT0 и INT1
		;out GICR, Temp
      	sei
		rjmp loop