|
仅供参考, x为要输出的电流数!@#$%^&*
void Output_Current(float x)
{
#define AD421_CLOCK 0x04 // P6.2
#define AD421_DATA 0x02 // P6.1
#define AD421_LTACH 0x01 // P6.0
#define AD421_DIR P6DIR // AD421定义为P6口
#define AD421_PORT P6OUT // AD421得输出口
unsigned int i;
unsigned int k=0x8000;
unsigned int DA_code;
AD421_DIR|=AD421_LTACH+AD421_DATA+AD421_CLOCK;
AD421_PORT&=~AD421_LTACH;
AD421_PORT&=~AD421_CLOCK;
if(x>=16)
{
x=x-16;
AD421_PORT|=AD421_DATA;
}
else AD421_PORT&=~AD421_DATA;
DA_code=4096*x;
AD421_PORT|=AD421_CLOCK;
for(i=0;i<16;i++)
{
AD421_PORT&=~AD421_CLOCK;
k&=DA_code;
DA_code=DA_code<<1;
if(k!=0)
{
AD421_PORT|=AD421_DATA;
}
else
AD421_PORT&=~AD421_DATA;
AD421_PORT|=AD421_CLOCK;
k=0x8000;
}
AD421_PORT|=AD421_LTACH;
} |
|