#include <16F818.h>

#fuses HS,NOWDT
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#define  SCK pin_a0
#define  SDI pin_a2
#define  LOAD pin_a3
#DEFINE  CS   PIN_a1

#use delay(clock=20000000)

INT16 COUNT;

int1 flg_ccp;
int16 data_a;
VOID CALL_DAC(VOID);
void writ_DAC_A(VOID);
#int_CCP1
CCP1_isr()
{
 FLG_CCP=1;
}


void main() {

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(FALSE);
   //setup_psp(PSP_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_CAPTURE_FE);
   enable_interrupts(INT_CCP1);
   enable_interrupts(GLOBAL);
   FLG_CCP=0;
   


   while(TRUE)
   {
     IF(FLG_CCP)
     {

      
      count=ccp_1;
      set_timer1(0);
      CALL_DAC();
      flg_ccp=0;
     }

}
}
void writ_DAC_A(VOID)
{int8 i;
  output_HIGH(CS);
  
  DATA_A+=count;
  
DELAY_US(10);
DATA_A&=0X7FFF;


output_low(CS);
output_low(SCK);
OUTPUT_HIGH(LOAD);


for(i=0;i<16;++i)
   {
     output_bit(SDI,shift_left(&DATA_A,2,0));

     DELAY_US(1);
     
     output_high(SCK);
     delay_us(5);
     output_low(SCK);
     delay_us(5);


   }
     output_LOW(LOAD);
     delay_us(50);
     output_HIGH(LOAD);
     DELAY_US(1);OUTPUT_LOW(CS);DELAY_US(10);
}

VOID CALL_DAC(VOID)
{
DATA_A=0XF000;


 
writ_DAC_A(); 


//DATA_B=0XFEF0;



output_HIGH(CS);
//writ_DAC_B();
}

