bit j,jj,x;
#define CLK PORTC.0
#define DIN PORTC.1
#define CSLD PORTC.2
unsigned int a,row_data,i,temp,data1,temp2,temp3;
char data[4],dat[4];
///////////
кусок кода)
////////////
temp3=data1*21;
CSLD=0;
temp3=temp3>>15; //15
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>14; //14
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>13; //13
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>12; //12
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>11; //11
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>10; //10
x=temp3;
DIN=x;
;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>9; //9
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>8; //8
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>7; //7
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>6; //6
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>5; //5
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>4; //4
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>3; //3
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>2; //2
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
temp3=temp3>>1; //1
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
temp3=data1*21;
//0
x=temp3;
DIN=x;
CLK=1;
delay_ms(10);
CLK=0;
CSLD=1;
Если у кого есть наработки с 16 DAC прошу выложить.
Еще хочу отметить что при такой реализации 3-wire криво преобразуется сигнал. Моделировал в PROTEUS, может как нить не правильно подключил сам ЦАП.


