微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > AD7705的DRDY引脚一直为高电平

AD7705的DRDY引脚一直为高电平

时间:10-02 整理:3721RD 点击:

各位大哥大姐帮下忙谢谢了先!

DRDY一直为高电平,AD7705似乎没有工作

#include<stc89c58.h> 
#include<intrins.h>
sbit  addata = P3^0 ;
sbit  sclk = P3^1 ;
sbit  drdy = P2^7 ;
sbit LED=P4^1;
sbit AD7705_CS=P2^5;  //片选//
sbit AD7705_RESET=P2^4;  //复位//
#define uchar unsigned char
#define uint unsigned int
void wrbyt(uchar shu);
int rdbyt( );
void ad7705_init( void ) ;
void delay(uchar t);
/************************************************/
//写一个字节//
void wrbyt( uchar shu )
{
 uchar  i ;
 AD7705_CS=0;    //  CS ON
 sclk=1;
     _nop_();
 _nop_();
for(i=0;i<8;i ++)
 {
  addata=(bit)(shu&0x80);
   sclk = 0 ;
     _nop_();
 _nop_();
 _nop_();
 sclk = 1 ;
 shu = shu<<1 ;
 }
 _nop_();
 AD7705_CS=1;    //CS OFF
}
/************************************************/
//读一个字//
int rdbyt( void )
{
 int  temp ;
 uchar  j ;
 AD7705_CS=0;    //  CS ON
  sclk=1;
 _nop_();
 for(j=0;j<8;j++)
 {
  sclk = 0 ;
     _nop_();
  _nop_();
  temp = temp<<1;
  temp|=(uchar)addata;
  _nop_();
  _nop_();
       sclk =1;
    _nop_();
   _nop_();
 }
  _nop_();
 AD7705_CS=1;    //  CS OFF
 drdy=1;
 return (temp ) ;
 
}
/************************************************/
//初始化AD7705//
void ad7705_init( void )
{
 wrbyt( 0x20 ) ;
 
 wrbyt( 0x0C) ;      //写时钟寄存器//
 
 wrbyt( 0x10 ) ;
 
 wrbyt( 0x44 ) ;        //写设置寄存器//
 
}

/************************************************/
//主函数//
void main()
{
 uint v_temp ;
 AD7705_RESET=1;
 ad7705_init() ;
while( 1 )
 {
  while(drdy);
  wrbyt( 0x38 ) ;
  //addata=1;      //每次写操作后保证DIN为高电平//
  v_temp = rdbyt() ;
  delay(50);
  sclk=1;
  addata=1;      //防止误读//
 }
}



真的很不错,受用了

我也遇到了,不过有时候能读出来,但是读出来都是30000多以上,即使输入接地也有这么多,不知道什么情况

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top