void DACTx(int x,int z,int D[12]) { int y,A[4],C[4],F[4],P[4],K[4],Bx[12]; unsigned long Tx[32]; for(y=0;y<12;y++) {Bx[y]=D[y]; } switch (x) { case 0: A[0]=0,A[1]=0,A[2]=0,A[3]=0; break; case 1: A[0]=1,A[1]=0,A[2]=0,A[3]=0;break; case 2: A[0]=0,A[1]=1,A[2]=0,A[3]=0;break; case 3: A[0]=1,A[1]=1,A[2]=0,A[3]=0; break; case 4: A[0]=0,A[1]=0,A[2]=1,A[3]=0; break; case 5: A[0]=1,A[1]=0,A[2]=1,A[3]=0;break; case 6: A[0]=0,A[1]=1,A[2]=1,A[3]=0; break; case 7: A[0]=1,A[1]=1,A[2]=1,A[3]=0; break; case 8: A[0]=1,A[1]=1,A[2]=1,A[3]=1; break; default: A[0]=1,A[1]=1,A[2]=1,A[3]=1; break ; } switch(z) { case 1: // power up all DAC... F[0]=1; F[1]=1; F[2]=1; F[3]=1; C[0]=0; C[1]=0; C[2]=1; C[3]=0; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=1; K[1]=1; K[2]=1; K[3]=1; Bx[0]=0;Bx[1]=0;break; case 2: //internal reference enable F[0]=1; F[1]=0; F[2]=0; F[3]=0; C[0]=0; C[1]=0; C[2]=0; C[3]=1; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=0; K[1]=0; K[2]=0; K[3]=0; Bx[11]=1;Bx[10]=0;Bx[9]=1; break; case 3: //clear code F[0]=0; F[1]=0; F[2]=0; F[3]=0; C[0]=1; C[1]=0; C[2]=1; C[3]=0; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=0; K[1]=0; K[2]=0; K[3]=0; Bx[0]=0;Bx[1]=0;break; case 4: //Write to input register F[0]=0; F[1]=0; F[2]=0; F[3]=0; C[0]=0; C[1]=0; C[2]=0; C[3]=0; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=0; K[1]=0; K[2]=0; K[3]=0; break; case 5: //write selected DAC and update only same.. F[0]=0; F[1]=0; F[2]=0; F[3]=0; C[0]=1; C[1]=1; C[2]=0; C[3]=0; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=0; K[1]=0; K[2]=0; K[3]=0; break; case 6: //software reset F[0]=0; F[1]=0; F[2]=0; F[3]=0; C[0]=1; C[1]=1; C[2]=1; C[3]=0; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=0; K[1]=0; K[2]=0; K[3]=0; break; case 7: // write to selected and update all F[0]=0; F[1]=0; F[2]=0; F[3]=0; C[0]=0; C[1]=1; C[2]=0; C[3]=0; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=0; K[1]=0; K[2]=0; K[3]=0; break; case 8: //Update to input register F[0]=0; F[1]=0; F[2]=0; F[3]=0; C[0]=1; C[1]=0; C[2]=0; C[3]=0; P[0]=0; P[1]=0; P[2]=0; P[3]=0; K[0]=0; K[1]=0; K[2]=0; K[3]=0; break; } for(y=0;y<32;y++) { if(y<4) {Tx[y]=F[y];} else if(y<8) {Tx[y]= K[y-4];} else if(y<20) {Tx[y]= Bx[y-8];} else if(y<24) {Tx[y]= A[y-20];} else if(y<28) {Tx[y]= C[y-24];} else {Tx[y]= P[y-28];}} spienable(1); delay(5); SSIEnable(SSI0_BASE); for (y=7;y>=0;y--) { SSIDataPut(SSI0_BASE , Bin2Hex(&Tx[((y*4))])); } while(SSIBusy(SSI0_BASE)) { } portc &=~(pin4); }