#include <htc.h>
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 20000000
#define DAC_CS RB7
#define DAC_SCK RB6
#define DAC_SDI RC0
#define DAC_LDAC RC1
void init_dac()
{
DAC_CS = 0b1;
DAC_LDAC = 0b1;
DAC_SCK = 0b1;
DAC_SDI = 0b1;
}
void write_dac(unsigned int data) {
unsigned char i;
unsigned short long tobesent;
tobesent = (short)0x030000UL || data;
DAC_LDAC = 0b1;
DAC_SCK = 0b0;
DAC_CS = 0b0;
for(i=0; i<=23; ++i)
{
__delay_us(10);
if(i<4 || (i>7 && i<12))
tobesent = tobesent << 1u;
else
{
DAC_SDI = (bit) (tobesent / (short) 0x800000UL);
//DAC_SDI = 0b1;
tobesent = tobesent << 1u;
DAC_SCK = 0b1;
DAC_SCK = 0b0;
}
}
DAC_CS = 0b1;
DAC_LDAC = 0b0;
__delay_us(10);
DAC_LDAC = 0b1;
}