.include "2313def.inc"

.equ	FS	=5
.equ	SCLK	=4
.equ	DIN	=3

.def	Temp	=R16
.def	Temp2	=R17
.def	Temp3	=R18
.def	sregcopy=R19
.def	count	=R20

.org	0x0000	

rjmp 	RESET

RESET:	ldi	Temp, 0x00 
	out	DDRB, Temp
	ldi	Temp, 0x00
	out	PORTB, Temp

	ldi	Temp, 0xFF 
	out	DDRD, Temp
	ldi	Temp, 0xFF
	out	PORTD, Temp
	
	clr	Temp2
	clr	Temp3


Loop:	in	Temp, PINB
	cp	Temp, Temp3
	in	sregcopy, SREG
	sbrs	sregcopy, 1
	rcall	UpDAC
	rjmp	Loop

UpDAC:	mov	Temp3, Temp

	rol	Temp
	in	sregcopy, SREG
	sbrc	sregcopy, 0
	sbr	Temp2, 4
	sbrs	sregcopy, 0
	cbr	Temp2, 4

	rol	Temp
	in	sregcopy, SREG
	sbrc	sregcopy, 0
	sbr	Temp2, 2
	sbrs	sregcopy, 0
	cbr	Temp2, 2

	rol	Temp
	in	sregcopy, SREG
	sbrc	sregcopy, 0
	sbr	Temp2, 1
	sbrs	sregcopy, 0
	cbr	Temp2, 1

	rol	Temp
	in	sregcopy, SREG
	sbrc	sregcopy, 0
	sbr	Temp2, 0
	sbrs	sregcopy, 0
	cbr	Temp2, 0
	
	cbr	Temp2,0xF0

;begin uitvoer naar DAC

	cbi	PORTD, FS

	ldi	count, 0x08
loop1:	rol	Temp2		
	in	sregcopy, SREG
	sbrc	sregcopy, 0
	sbi	PORTD, DIN
	sbrs	sregcopy, 0
	cbi	PORTD, DIN

	cbi	PORTD, SCLK
	nop
	sbi	PORTD, SCLK

	dec	count
	tst	count
	brne	loop1

; volgende byte (Temp)

	ldi	count, 0x08
loop2:	rol	Temp		
	in	sregcopy, SREG
	sbrc	sregcopy, 0
	sbi	PORTD, DIN
	sbrs	sregcopy, 0
	cbi	PORTD, DIN

	cbi	PORTD, SCLK
	nop
	sbi	PORTD, SCLK

	dec	count
	tst	count
	brne	loop2

	ret

	out	rjmp	Loop
