| 这是我写过的AD7888一段代码,LZ可以参考下. AD7888 soic封装 30多文/个
 
 unsigned char bdata Indata;
 sbit bitin = Indata^0;
 sbit cs = P2^4;     //
 sbit sclk = P2^3;    //  AD7888 control
 sbit dout = P2^1;    //
 sbit din = P2^2;
 ......
 
 
 uint AD7888(uchar input)        //AD7888 转换数据函数
 {
 uint getdata, tempdata;
 uchar count;
 
 Indata = input;  //ad参数设置
 cs = 0;         //选通ad工作
 getdata = 0;
 
 for (count = 0; count < 16; count++)
 {
 sclk = 0;
 din = bitin; //等待sclk上升沿
 Indata = Indata >> 1;  //右移一位,让原indata的低1位移动到低0位,通过bitin=indata^0 加到din上
 sclk = 1;
 sclk = 0;   //下降沿已发出,ad7888发送转换数据,高位先出
 tempdata = dout;  //将ad发出的数据存入tempdata
 getdata = getdata << 1;     //    左移一位
 getdata = getdata + tempdata;  //不同数据类型相加
 
 }
 cs = 1;
 getdata = getdata >> 1;
 return getdata;
 }
 |