.include "1200def.inc"

.def	EEard	=r18		; Адрес, по которому должно быть выполнено чтение
.def	EEawr	=r17		; Адрес, по которому должно быть выполнено программирование
.def	EEdwr	=r16		; Байт, подлежащий программированию в памяти EEPROM
.def	EEdrd	=r0		; Байт, считанный из памяти EEPROM 

	rjmp	RESET		; К основной программе после сброса

EEWrite:
	sbic	EECR,EEWE	; Если EEWE - не лог. 0, то
	rjmp	EEWrite		;    ожидать окончания программирования
	out	EEAR,EEawr	; Запись адреса в регистр адреса
	out	EEDR,EEdwr	; Запись байта данных в регистр данных  
	sbi	EECR,EEWE	; Установка разряда EEWE - начало процесса 
				; программирования. Команда выполняется за 
				; 4 такта, поскольку ЦП задерживается на 2 такта
	ret

EERead:
	sbic	EECR, EEWE	; Если EEWE - не лог. 0, то
	rjmp	EERead		;    ожидать дальше
	out	EEAR, EEard	; Запись адреса в регистр адреса
	sbi	EECR, EERE	; Установка разряда EERE - начало процесса
				; чтения. Команда выполняется за 4 такта, 
				; поскольку ЦП задерживает на 2 такта
	sbi	EECR, EERE	; Повторная установка разряда EERE. Команда
				; выполняется за 4 такта, поскольку
				; ЦП задерживается на 2 такта
	in	EEdrd, EEDR	; Читать байт данных
	ret

RESET:
	ldi	EEdwr, $aa	; Установка регистра данных памяти EEPROM
	ldi	EEawr, $10	; Установка регистра адреса памяти EEPROM
	rcall	EEWrite		; Записываем $aa по адресу $10 EEPROM 
	ldi	EEard, $11	; Установка регистра адреса памяти EEPROM
	rcall	EERead		; Считывааем байт данных по адресу $11
Endlos:
	rjmp	Endlos		; Символически для продолжения программы
