打印

ad7705没玩明白,大家帮忙看看吧,唉

[复制链接]
1392|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ymcprophet|  楼主 | 2008-4-3 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg51.h"
#include "intrins.h"
#include "string.h"
void Reset7705(void);
void ad7705Init();
void Write(unsigned char dat);
unsigned read7705();
sbit   cs=P3^1;
sbit   reset=P3^2;
sbit   drdy=P3^3;
sbit   sclk=P3^4;
sbit   din=P3^6;
sbit   dout=P3^5;
void Reset7705(void) 
  {
       int tim,j;
       cs=0;
       tim=1000;
       reset=0;
       while(tim--);
       reset=1;
       sclk=1;
       for(j=0;j<1;j++) //*多于连续32个 din=1 使串口复位
             { 
                sclk=0;
          _nop_();
                _nop_();
                din =1; 
                sclk=1;             
             }
        //drdy=0;
   }
//写入寄存器8位数据
void Write(unsigned char dat) 
   {

      unsigned i;
      for(i=0;i<8;i++)
       { sclk=0;
         _nop_();
         _nop_();
         if(dat&0x80)
              din=1;
         else din=0;
         sclk=1;
         dat=dat<<1;
        }
    }

void ad7705Init()
  {
      Write(0x20); 
      Write(0x04); 
      Write(0x10); 
      Write(0x40);
  }
unsigned read7705() 
  {
     unsigned result=0;
     unsigned i,dout;
     while(drdy);
     Write(0x38); 
    sclk=1;
    for(i=0;i<16;i++)
       {
        result<<=1;
        sclk=1;
        _nop_();
        _nop_();
         result+=(0x01&dout);
         sclk=0; 
         _nop_();
         _nop_();
        }
     return result;
  }
void main()
  { 
    Reset7705(); 
    ad7705Init();
    read7705();//加while(1)似乎不对
  }

/****************************************
大家帮我看看这段程序,din 和dout都可以用示波器看到
din看起来还像数据,dout就是等间距的脉冲,
这肯定不转换后的输出量啊,哪里出了问题呢?
****************************************/

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝