#define uint unsigned int #define uchar unsigned char#define Channal_A     1    //通道A #define Channal_B     2    //通道B #define Channal_AB    3    //通道A&B
//**************************一下为函数声明修************************************** static void DA_conver(uint Dignum);
extern void Write_A_B(uint Data_A,uint Data_B,uchar Channal,bit Model) //=================================================================  // 函数名称 :void DA_conver(uint Dignum) // 函数功能 :进行DA转换  // 入口参数 :Dignum:根据说明设置转化数据.头四位为特殊位用于选择转化方式,
//            以及用于通道选择.请自行设置.后12位为需要转换的值 // 出口参数 :无
//================================================================= void DA_conver(uint Dignum) {
uint Dig=0; uchar i=0;
SCLK=1;
CS=0;           //片选有效
for(i=0;i<16;i++)   //写入16为Bit的控制位和数据 {
Dig=Dignum&0x8000;    if(Dig)     {
DIN=1;    }    else    {
DIN=0;    }
SCLK=0;    _nop_();    Dignum<<=1;    SCLK=1;    _nop_(); }
SCLK=1;
CS=1;       //片选无效 }
//=================================================================  // 函数名称 :void Write_A_B(uint Data_A,uint Data_B,uchar Channal,bit Model)
// 函数功能 :模式、通道选择并进行DA转换  // 入口参数 :Data_A:A通道转换的电压值 //            Data_B:B通道转换的电压值
//            Channal:通道选择,其值为Channal_A,Channal_B,或Channal_AB
//            Model:速度控制位 0:slow mode 1:fast mode // 出口参数 :无
// 说明:     Data_A,Data_B的范围为:0—0x0fff //            本程序如果只需要一个通道时,另外一个通道的值可任意,但是不能缺省
//================================================================= int main(void) {
Write_A_B(0x0355,0x0000,Channal_A,0);   //测量A通道    Write_A_B(0x0000,0x0600,Channal_B,1);   //测量B通道
// Write_A_B(0x0504,0x0a47,Channal_AB,1);   //测量AB通道,测量时需屏蔽上面两句    while(1);
void Write_A_B(uint Data_A,uint Data_B,uchar Channal,bit Model) {
uint Temp; if(Model)  {
Temp=0x4000; } else      {
Temp=0x0000; }
switch(Channal) {
case Channal_A:         //A通道
DA_conver(Temp|0x8000|(0x0fff&Data_A));       break;
case Channal_B:       //B通道
DA_conver(Temp|0x0000|(0x0fff&Data_B));     break;
case Channal_AB:
DA_conver(Temp|0x1000|(0x0fff&Data_B));        //A&B通道          DA_conver(Temp|0x8000|(0x0fff&Data_A));     break;     default:          break; } } };
sbit DIN   = P0^0;     //数据输入端 sbit SCLK = P0^1;     //时钟信号
sbit CS    = P0^2;     //片选输入端,低电平有效