.include "m168Pdef.inc"


.org 0
	jmp start
.org INT_VECTORS_SIZE

start:
	ldi r16, low(RAMEND)
	out SPL, r16
	ldi r16, high(RAMEND)
	out SPH, r16

	in r16, DDRB
	ori r16, (1<<PB5)
	out DDRB, r16	
	in r16,PORTB
	andi r16, ~(1<<PB5)
	out PORTB, r16

    ldi  r18, 5
    ldi  r19, 15
    ldi  r20, 242
L1: dec  r20
    brne L1
    dec  r19
	wdr
    brne L1
	wdr
    dec  r18
    brne L1




;	lds r16,WDTCSR
;-------------------------------------	
	ldi zl, low(0x0000)
	ldi zh, high(0x0000)
	lds r19, SPMCSR
	ori r19, (1<<BLBSET)|(1<<SELFPRGEN)
	sts SPMCSR, r19
	lpm

	ldi r17, 0x00
	ldi r18, 0x00
	call EEPROM_write
;---------------------------------------
	ldi zl, low(0x0001)
	ldi zh, high(0x0001)
	lds r19, SPMCSR
	ori r19, (1<<BLBSET)|(1<<SELFPRGEN)
	sts SPMCSR, r19
	lpm

	ldi r17, 0x01
	ldi r18, 0x00
	call EEPROM_write
;---------------------------------------
	ldi zl, low(0x0002)
	ldi zh, high(0x0002)
	lds r19, SPMCSR
	ori r19, (1<<BLBSET)|(1<<SELFPRGEN)
	sts SPMCSR, r19
	lpm

	ldi r17, 0x02
	ldi r18, 0x00
	call EEPROM_write
;---------------------------------------
	ldi zl, low(0x0003)
	ldi zh, high(0x0003)
	lds r19, SPMCSR
	ori r19, (1<<BLBSET)|(1<<SELFPRGEN)
	sts SPMCSR, r19
	lpm

	ldi r17, 0x03
	ldi r18, 0x00
	call EEPROM_write
;---------------------------------------







	in r16,PORTB
	ori r16, (1<<PB5)
	out PORTB, r16

loop:
	wdr
	jmp loop

EEPROM_write:
; Wait for completion of previous write
sbic EECR,EEPE
rjmp EEPROM_write
; Set up address (r18:r17) in address register
out EEARH, r18
out EEARL, r17
; Write data (r16) to Data Register
out EEDR,r0
; Write logical one to EEMPE
sbi EECR,EEMPE
; Start eeprom write by setting EEPE
sbi EECR,EEPE
ret
