#include "config.h"
#define DA_IN (1<<6) /*P0.6口为ATT7022B的片选 */
#define DA_CK (1<<7) /*P0.7输出引脚*/
#define DA_CS (1<<24) /*P1.24输出引脚*/
/****************************************************************************
* 名称:dacIni()
* 功能:初始化dac8532接口。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void DacIni1(void)
{
IO0DIR=DA_IN | DA_CK | IO0DIR;
IO1DIR=DA_CS | IO1DIR;
IO1SET=DA_CS;
IO0SET=DA_IN;
IO0SET=DA_CK;
}
//**************************************************//
//命令字
//0x00
//0x10
//0x04
//0x14
//
//
void write_Dac(uint8 command,uint16 Dac_nunber)
{
uint8 i,data=0x80;
uint16 shift_data=0x8000;
IO1SET=DA_CS;
IO0CLR=DA_CK;
IO1CLR=DA_CS;
for(i=0;i<8;i++)
{
IO0SET = DA_CK; // CLK
if((command & data)!=0)
{
IO0SET = DA_IN;
IO0SET = DA_IN;
}
else
{
IO0CLR = DA_IN;
IO0CLR = DA_IN;
}
IO0CLR = DA_CK; // CLK
IO0CLR = DA_CK; // CLK
data =(data>>1);
}
for(i=0;i<16;i++)
{
IO0SET = DA_CK; // CLK
if((Dac_nunber & shift_data)!=0)
{
IO0SET = DA_IN;
IO0SET = DA_IN;
}
else
{
IO0CLR = DA_IN;
IO0CLR = DA_IN;
}
IO0CLR = DA_CK; // CLK
IO0CLR = DA_CK; // CLK
shift_data =(shift_data>>1);
}
IO1SET=DA_CS;
IO0SET = DA_CK; // CLK
IO0SET = DA_IN;
}
////////*******例子
switch(step_num)
{
case 0:
corrosive_Vx=0x8000;
write_Dac(0x00,0x8000);
write_Dac(0x34,0x8000);
step_num++;
break;
case 1:
corrosive_buf[0]=read_ad(0x97);
step_num++;
break;
case 2:
corrosive_buf[1]=read_ad(0x97);
if(corrosive_buf[0]/2 == corrosive_buf[1]/2)
{
sum=corrosive_buf[0]+corrosive_buf[1];
corrosive_V=sum/2;
corrosive_buf[2]=corrosive_V;
corrosive_buf[1]=read_ad(0xa7);
send_num16(corrosive_buf[2]);
send_num16(corrosive_buf[1]);
corrosive_Vx=corrosive_V;
IO0SET=SHUT2;
step_num++;
}
else
{
step_num--;
}
break;