;*************EEPROM****************************************************
;		7 февраля 2010г. 13-30
;
; Работа с EEPROM микроконтроллера.
;
; Автор "kuber" - trio-tv@mail.ru
;
 ;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 120 байт
;
; 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 120 байт код key(4x30)
;
EE_erase_all:
;
	ldi	ZL,ee_adres_rfid_code
;
	ldi	temp_2,120 	;30 ключей по 4 байта
	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,31		;30 максимальное кол-во карт Tiny25
;
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
;
;
;Посылка совпала с записью кодов-карт
;
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


;;