;*************EEPROM****************************************************
;
;Работа с EEPROM микроконтроллера.
;
;EEprom_write		- запись EEPROM, ZL-adr, temp_1-data
;EEprom_read		- чтение EEPROM, ZL-adr, temp_1-data
;EE_wr_rf_4bytes		- запись в EEPROM 4 байт из RAM, по адресу в (num_string)
;EE_erase_all		- обнуление в EEPROM 40 байт
;
;EE_compare_rfid_paket	- сравнение принятой посылки с базой Rfid card
;
;***********************************************************************
;
;
.cseg
;
;****************************************************
EEprom_write:
	cli
;
ee_ew:
	sbic 	EECR,EEPE
	rjmp 	ee_ew
;
	out 	EEARL, ZL
;
	out 	EEDR, temp_1
;
	sbi 	EECR,EEMPE
; Start eeprom write by setting EEPE
	sbi 	EECR,EEPE
;
	sei
;
	ret
;**************************************************
;
EEprom_read:
;
	sbic 	EECR,EEPE
	rjmp 	EEprom_read
;
	out	EEARL, ZL
;
	sbi 	EECR,EERE
; Read data from Data Register
	in 	temp_1,EEDR
;
	ret
;
;*****************************************************
;
;
;запись в EEPROM 4 байт 
;
;
EE_wr_rf_4bytes:
;
;В регистре temp_1 номер 4 байтной записи
;
	ldi	ZL,num_string
	rcall	EEprom_read
;
EE_WR_MASTER_4BYTES:
;
	ldi	ZL,ee_adres_rfid_code
;
	tst	temp_1
	breq	wr_cnt_z4b
;
wr_find_cnt_4b:
;
	adiw	ZL,4
	dec	temp_1
	brne	wr_find_cnt_4b
;
wr_cnt_z4b:
;
	lds	temp_1,(ee_paket_byte1)
	rcall	EEprom_write
	inc	ZL
;
	lds	temp_1,(ee_paket_byte2)
	rcall	EEprom_write
	inc	ZL
;
	lds	temp_1,(ee_paket_byte3)
	rcall	EEprom_write
	inc	ZL
;
	lds	temp_1,(ee_paket_byte4)
	rcall	EEprom_write
;
;
	ret
;
;**********************************************************
;
;обнуление в EEPROM 40 байт код key(4x10)
;
EE_erase_all:
;
	ldi	ZL,ee_adres_rfid_code+4
;
	ldi	temp_2,40 	;10 ключей по 3 байта
	ldi	temp_1,0
;
e_er_rf_c1:
	rcall	EEprom_write
	inc	ZL
;
	dec	temp_2
	brne	e_er_rf_c1
;
	ret
;
;********************************************************
;Сравнивается принятый пакет посылки Rfid card с базой
; в EEPROM
;
;
EE_compare_rfid_paket:
;
	ldi	YL,ee_adres_rfid_code
;
	ldi	temp_3,11	;максимальное кол-во карт
;
e_comp_b1:
;
	mov	ZL,YL
;
	lds	temp_2,(ee_paket_byte1)
	rcall	EEprom_read
	cp	temp_1,temp_2
	brne	e_comp_b2
	inc	ZL
;
	lds	temp_2,(ee_paket_byte2)
	rcall	EEprom_read
	cp	temp_1,temp_2
	brne	e_comp_b2
	inc	ZL
;
	lds	temp_2,(ee_paket_byte3)
	rcall	EEprom_read
	cp	temp_1,temp_2
	brne	e_comp_b2
	inc	ZL
;
	lds	temp_2,(ee_paket_byte4)
	rcall	EEprom_read
	cp	temp_1,temp_2
	brne	e_comp_b2
;
	cpi	YL,ee_adres_rfid_code
	brne	card_code
;
;Посылка совпала с записью мастер-карты
;
	sbr	Flag_R,0b00000100	;2 бит
	rjmp	master_code
;
;Посылка совпала с записью кодов-карт
;
card_code:
;
	sbr	Flag_R,0b00001000	;3 бит
;
master_code:
;
	ret
;
e_comp_b2:
;
	adiw	YL,4
	dec	temp_3
	brne	e_comp_b1
;
;Посылки нет в базе карт
;
	cbr	Flag_R,0b00001100	;2,3 бит
;
	ret


;;