.include "8515def.inc"	


.def	temp1 = r16

.equ	CS = pb4

ldi	temp1,low(ramend)
out	spl,temp1		;set spl
ldi	temp1,high(ramend)
out	sph,temp1		;set sph 		

ldi	temp1,$ff
out	ddrb,temp1		;PortB ist Ausgang
out	ddrc,temp1		;PortC ist Ausgang
ldi	temp1,$ff
out	portb,temp1
sbi	portb,4
ldi	temp1,$80
out	$3f,temp1		;IRQ in SREG freigeben

ldi	temp1,$93		;SPI Init
out	spcr,temp1




;---------------------------------------------

send_data:
cbi	portb,4			;enable Slave
sbi	spcr,spe		;enable SPI
ldi	temp1,$01
out	spdr,temp1		;reset senden, Init Slave
rcall	warten			;Warten bis TX fertig
rcall	delay			;0.5mS warten, dann weiter


ldi	temp1,$30
out	spdr,temp1		;register 30 v. Slave wählen und senden
rcall	warten			;Warten bis TX fertig			


ldi	temp1,$55
out	spdr,temp1		;Daten nach Register $30 Slave senden
rcall	warten			;Warten bis TX fertig		
rcall	delay			;0,5mS warten


ldi	temp1,$31		
out	spdr,temp1		;register 31 v. Slave wählen und senden
rcall	warten			;Warten bis TX fertig				


ldi	temp1,$50
out	spdr,temp1		;Daten nach Register $31 Slave senden
rcall	warten			;Warten bis TX fertig				

rjmp	ende


;---------------------------- UP auf Flag Bit7, SPSR warten -------------


warten:				;Warten bis SPIF-Flag gesetzt
sbis	spsr,spif		;wenn Flag gesetzt, nächstes Byte
rjmp	warten			;sonst noch warten
cbi	spsr,spif		;spif löschen
ret




;-------------------------------- UP Delay 0,5mS ------------------------

delay:
          	ldi  R20, $03
L00:  		ldi  R21, $CB
L11:  		dec  R21
          	brne L11
          	dec  R20
          	brne L00

          	ldi  R20, $02
L12:  		dec  R20
          	brne L12

          	nop

ret

;----------------------------------- UP  Ende ---------------------------

ende:

sbi	portb,4			;Slave disable
cbi	spcr,spe		;SPI disable

loop:
rjmp	loop



