Hab mittlerweile das Problem gelöst.
Primitiv, aber es funktioniert mit jedem DAC (8Bit, 10 Bit...)

Wäre aber schneller gegangen, wenn sich jemand bereit erklärt hätte uns zu helfen.

(((( bin zu tiefst entäuscht!!!!!!


Funktionsweise:
8Bit-DAC bedeutet soviel, dass wenn ich dem Baustein seriell 8 Nullen (0b00000000 bzw. 0x00) zu schicke, am Ausgang 0V anliegt.
Sende ich dem DAC-Baustein 8 Einsen (0b11111111 bzw. 0xFF), so liegt am Ausgang die "Versorgungsspannung" z.B. 5V an.

8-bit: 2 hoch 8 = 256 (12Bit in 4096)

Ein 8-bit DAC kann somit die Spannung von 5V in 256 Teilen zerlegen bzw. darstellen.
5V / 256 = 0.020V -> 20mV Schritte (0b00000001 = 20mV am Ausgang)

Überlegung:
Ich muss also dem DAC Baustein irgendwie die einzelnen Bits "1" oder "0" zuschicken und dass 12 mal für 12Bit.... schaut euch einfach den Quellcode an

Pin Beschreibung:
SDI = Datenleitung, was hier anliegt "1" oder "0" wird mit jedem Takt in das Shift Register geschoben
CLK = Taktleitung um die SDI Zustände in das Shift Register zu schieben
CS = Liegt dieser Pin auf High, funktioniert der Takt-Pin CLK nicht, damit können mehere DACs geziehlt angesprochen werden
LD = Load; Läd die im Shiftregister enthaltene Info (bits) in das DAC Register das die Ausgangsspannung definiert
CLR = Setzt das DAC Register auf Null


Code:
;Funktionsweise:
;---------------------------------------------------------------------------------
;- CLR auf High (Festverdrahtung)
;- Loadpin (LD) auf Low setzten, DAC Ausgang „aus“
;- CS auf Low um den DAC-Chip auszuwählen
;- Bits im Register (temp/temp2) mit 0 oder 1 vergleichen und je nachdem SDI setzten.
;- CLK an/aus für SDI Übernahme
;- Bits im Register (temp/temp2) schieben um das nächste Bit mit 1 oder 0 zu vergleichen und auszugeben 
;- Loadpin (LD) auf High, für die Darstellung der Bits am Ausgang als Spannung (Volt)



;DAC Steuerleitungen
;---------------------------------------------------------------------------------
.equ SCL	= PC0	;Clock-Pin
.equ SDI	= PC1	;Daten-Pin
.equ LOAD	= PC2	;Daten ins DAC-Register laden
.equ CS		= PC3	;Chip-Select DAC1/2 -Auswahl (aktive Low)

;Register
;---------------------------------------------------------------------------------
.def temp	= r16
.def temp2	= r17
.def zaehler	= r18


DAC1_out_12Bit:
;---------------------------------------------------------------------------------
  ldi temp2, 0b00001111 ; R16 + R17 => 12 Bit
  ldi temp, 0b11111111 ; R17 => 8Bit
  
  cbi PortC, Loadpin ;deaktiviere Übernahme der Daten aus dem DAC Register
  cbi PortC, CS

mov R1, R16 	;kopiert den Inhalt von R16 in R1


;Schleife1
;---------------------------------------------------------------------------------
ldi R18, 0x04 		;Oberes Nibble des Registers R16 0b00001111
loop_4Bit:
  sbrc R9, 3 		;Überspringe wenn bit 3 Null "0" ist
  sbi PortC, SDI 	;“1“ an SDI

  sbrs R9, 3		;Überspringe wenn bit 3 Eins "1" ist
  cbi PortC, SDI	;“0“ an SDI
  
  ; SCL Takten
  sbi PortC, SCL	;”1” an SCL
  cbi PortC, SCL	;”0” an SCL
  
  lsl R1		;Inhalt des Registers R1 um 1 Stelle nach links schieben	

dec zaehler		;Zählregister 0x04 - 1 
brne loop_4Bit		;Springe wenn nicht „0“


;Schleife2 das gleiche noch mal, nur mit temp2
;---------------------------------------------------------------------------------
mov R1, temp2

ldi zaehler, 0x08
loop_8Bit:
  sbrc R9, 7
  sbi PortC, SDI

  sbrs R9, 7
  cbi PortC, SDI
  
  sbi PortC, SCL
  cbi PortC, SCL

  lsl R9

dec zaehler 
brne loop_8Bit
;---------------------------------------------------------------------------------
  cbi PortC, Load	;Daten die ins Shiftregister getaktet wurden, 
  sbi PortC, Load	; in das DAC-Register übernehmen

ret

Es gibt bestimmt eine bessere Lösung, aber bis dahin


Viel Spass!