这是我写过的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; } |