导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]AD7705没有工作[sunyouyuan]

 *第26257篇: [求助]AD7705没有工作

  
楼 主:sunyouyuan 2008年11月17日10:50
 [求助]AD7705没有工作

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

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;      //防止误读//
 }
}


此主题相关图片如下:
按此在新窗口浏览图片

  
2楼:sunyouyuan 2008年11月18日18:03
 注意
自己已经解决了,建议大家把输入输出最好分开!用模拟串口

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:成都嵌入式培训-Linux系统下的C语言开发需要学些什么

[下一篇主题]:编程问题求助!!!!