ADI 技术
直播中

李川

7年用户 153经验值
私信 关注
[问答]

AD7888通道1老是没有数据

各位工程师,我在做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;


  }
}     

回帖(1)

袁飞

2018-12-21 11:49:32
AD7888的8个通道,通过MUX进行选通,
其他7个通道是否能转换成功
举报

更多回帖

发帖
×
20
完善资料,
赚取积分