.include "tn2313def.inc"

.def     Temp=R16
.def     data=R17
.def     _sec=R18

.cseg
.org 0

rjmp Reset            ;вектора прерываний
rjmp INT_0
rjmp INT_1
rjmp Timer1_capt1
rjmp Timer1_comp1
rjmp Timer1_OVF1
rjmp Timer0_OVF0
rjmp UART_RX
rjmp UART_UDRE
rjmp UART_TX
rjmp ANA_COMP
rjmp PCINT
rjmp Timer1_comp2
rjmp Timer0_comp1
rjmp Timer0_comp2
rjmp USI_start
rjmp USI_OVF
rjmp EE_ready
rjmp WDT_OVF

;Reset:
INT_0:
INT_1:
Timer1_capt1:
;Timer1_comp1:
Timer1_OVF1:
Timer0_OVF0:
UART_RX:
UART_UDRE:
UART_TX:
ANA_COMP:
PCINT:
Timer1_comp2:
Timer0_comp1:
Timer0_comp2:
USI_start:
USI_OVF:
EE_ready:
WDT_OVF:
          reti

reset:    ldi Temp,0xFF		 	;настройка портов
          out DDRB,Temp
		  	  		 
		  ldi Temp,0b01000000   ;разрешить прерывание компаратора
          out TIMSK,Temp

          ldi Temp,0b00000011   ;тактовый сигнал = CK/64
          out TCCR1B,Temp

          ldi Temp,0x3d         ;инициализация компаратора
          out OCR1AH,Temp
          ldi Temp,0x09
          out OCR1AL,Temp
		
		  ldi Temp,RamEnd       ;установка указателя стека
		  out SPL,Temp
				 
		  sei
             
main:
		clr temp
		ldi data,0xfd
		rcall EEPROM_write
		clr data
inf:	rcall delay1s
		clr temp
		rcall EEPROM_read
		out portb,data
		rjmp inf
				
; ОБРАБОТЧИК ПРЕРЫВАНИЯ КОМПАРАТОРА

Timer1_comp1:
         inc _sec
		 reti

EEPROM_write:
		 sbic EECR,EEPE
		 rjmp EEPROM_write
		 out EEAR,temp
		 out EEDR,data
		 sbi EECR,EEMPE
		 sbi EECR,EEPE
		 ret

EEPROM_read:
		 sbic EECR,EEWE
		 rjmp EEPROM_read
		 out EEAR,temp
		 sbi EECR,EERE
		 in data,EEDR
		 ret

delay1s: clr _sec
		 clr temp
		 out TCNT1L,temp
		 out TCNT1H,temp
sr:		 cpi _sec,1
		 brne sr
		 ret
