.cseg
;
;********************************************************************
;SPI Mode 0 - для записи и чтения данных, сдвиг по спаду такта		*
;********************************************************************
spi_obmen:		out usicr,spi_cmd1	;нарастающий фронт без сдвига данных
				out usicr,spi_cmd2	;спадающий фронт со сдвигом данных
				out usicr,spi_cmd1	
				out usicr,spi_cmd2
				out usicr,spi_cmd1
				out usicr,spi_cmd2
				out usicr,spi_cmd1
				out usicr,spi_cmd2
				out usicr,spi_cmd1
				out usicr,spi_cmd2
				out usicr,spi_cmd1
				out usicr,spi_cmd2
				out usicr,spi_cmd1
				out usicr,spi_cmd2
				out usicr,spi_cmd1
				out usicr,spi_cmd2
				in spi_usidr,USIDR	;чтение данных
				ret
;
;****************************************************************
;Чтение регистра состояния										*
;****************************************************************
read_status:	cbi portb,pb4			;установить CS
				ldi spi_usidr,0xd7		;команда чтения регистра статуса
				out USIDR,spi_usidr
				rcall spi_obmen			;прочитать регистр статуса
				rcall spi_obmen
				sbi portb,pb4
				ret
;
;****************************************************************
;ожидание готовности флеш, выход: spi_usidr - регистр статуса	*
;****************************************************************
busy:			cbi portb,pb4			;установить CS
				ldi spi_usidr,0xd7		;команда чтения регистра статуса
				out USIDR,spi_usidr
				rcall spi_obmen			;записать команду
busy_1:			rcall spi_obmen			;прочитать регистр статуса
				sbrs spi_usidr,PB7		;если готов - пропустить
				rjmp busy_1				;иначе - повторить
				sbi portb,pb4			;сбросить CS	
				ret
;
;****************************************************************
;Передача команды и адреса adr_nach										*
;****************************************************************
kom_adr:		out USIDR,spi_usidr
				rcall spi_obmen			;записать команду
				out USIDR,adr_nach2
				rcall spi_obmen			;записать старший байт адреса
				out USIDR,adr_nach1
				rcall spi_obmen			;записать средний байт адреса
				out USIDR,adr_nach0
				rcall spi_obmen			;записать младший байт адреса
				ret
;
;****************************************************************
;Передача команды и адреса adr_kon										*
;****************************************************************
kom_adr_kon:	out USIDR,spi_usidr
				rcall spi_obmen			;записать команду
				out USIDR,adr_kon2
				rcall spi_obmen			;записать старший байт адреса
				out USIDR,adr_kon1
				rcall spi_obmen			;записать средний байт адреса
				out USIDR,adr_kon0
				rcall spi_obmen			;записать младший байт адреса
				ret
;
;****************************************************************
;Передача команды и адреса adr_sled_str										*
;****************************************************************
kom_adr_sled:	out USIDR,spi_usidr
				rcall spi_obmen			;записать команду
				out USIDR,adr_sled_str2
				rcall spi_obmen			;записать старший байт адреса
				out USIDR,adr_sled_str1
				rcall spi_obmen			;записать средний байт адреса
				out USIDR,adr_sled_str0
				rcall spi_obmen			;записать младший байт адреса
				ret
;
;************************************************************************
;Мигание светодиодом, используется аппаратная особенность записи в порт	*										*
;************************************************************************
Comp_matchA:	sbic pind,pd3
				cbi PORTD,PD3
;
				sbis pind,pd3
				sbi portd,pd3
				reti
;
;************************************************************
;подпрограмма задержки										*
;************************************************************
delay:			ldi tmp1,0xff			;задержка после включения питания для флеш
				ldi tmp2,0xff
delay1:			dec tmp1
				brne delay1
				dec tmp2
				brne delay1
				ret