各位工程师,我在做AD7888实验时使用的是
单片机控制AD7888的转换。端口定义在P0.0-P0.3。Measure函数就是AD7888的输入和输出函数,函数简单。Main函数就是把转换出来的值给发出来。很简单的测试程序就是出不来。请各位工程师帮忙看下。
附上程序:
#include
#include
#define uint unsigned int
#define uchar unsigned char
***it SCLK=P0^0;
***it DOUT=P0^1;
***it DIN=P0^2;
***it CS=P0^3;
uint getdata=0x0000;
uchar buf[2];
void delay(uint z)
{
uint i,j;
for(i=0; i
for(j = 0; j < 110; j++) ;
}
void measure()
{
uchar i,j;
uint ADDR=0x0400; //工作模式
CS=0;
SCLK=1;
for(i=0;i<8;i++) //前8位
{
SCLK=0;
_nop_();_nop_();
if(ADDR&0x8000)
DIN=1;
else DIN=0;
ADDR<<=1;
SCLK=1;
_nop_();_nop_();
if(DOUT)
getdata=getdata|0x0001;
getdata<<=1;
}
for(i=0;i<8;i++) //后八位
{
SCLK=0;
_nop_();_nop_();
SCLK=1;
_nop_();_nop_();
if(DOUT)
getdata=getdata|0x0001;
getdata<<=1;
}
CS=1;
}
void main()
{
uchar i;
CS=1;
TMOD=0X20;
TL1=0XFD;
TH1=0XFD;
SCON=0X50;
PCON=0X00;
TR1=1;
ES=1;//
EA=1;
while(1)
{
ES=0;
measure();
buf[1]=getdata;
buf[0]=getdata>>8;
for(i=0;i<2;i++)//发出来到电脑上显示
{
SBUF=buf;
while(ti==0);
TI=0;
delay(1000);
}
ES=1;
}
}