sbit SCLK = P1^2;
sbit MOSI = P1^3;
sbit MISO = P1^4;
sbit CS = P1^5;
void spisend(unsigned char s_hdata,unsigned char s_ldata)
{
unsigned char num;
SCLK = 0;
for(num = 0; num < 8; num++)
{
SCLK = 0;
delay5us();
if( s_hdata & 0x80 )
MOSI = 1;
else
MOSI = 0;
SCLK = 1;
s_hdata <<= 1;
delay5us();
}
for(num = 0; num < 8; num++)
{
SCLK = 0;
delay5us();
if( s_ldata & 0x80 )
MOSI = 1;
else
MOSI = 0;
SCLK = 1;
s_ldata <<= 1;
delay5us();
}
}
#include "AD5541.h"
void AD5541_Input_Data(u16 value)
{
u16 i;
DAC_nCS = 0;
for(i=0;i<16;i++)
{
DAC_MOSI = ((value&0x8000)? 1:0);
value<<=1;
DAC_SCLK = 1;
DAC_SCLK = 0;
}
DAC_MOSI = 0;
DAC_nCS = 1;
}
extern int current;
void AD5541_OutputVoltage( int current )
{
float Voltage;
u16 D;
if( current <= 120 )
{
Range_Switch = 1;
Voltage = current * 8.33*0.001;
D = (u16)((65536*Voltage)/3.0);
AD5541_Input_Data(D);
}
else
{
Range_Switch = 0;
Voltage = current * 3.33*0.001;
D = (u16)((65536*Voltage)/3.0);
AD5541_Input_Data(D);
}
}
void AD5541_RangeSwitch(void)
{
if( current <= 120 )
Range_Switch = 1;
else
Range_Switch = 0;
}