打印

ads1232的程序究竟错在哪儿

[复制链接]
3568|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuzhmx|  楼主 | 2011-6-4 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ads1232的程序/*    晶振:12MHz              */
#include <AT89X51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
uchar    a;
bit T_ad_flag=0;
uchar code table[]="0123456789ABCDEF.";
ulong ad_data_buff[]={0,0,};

sbit PDWN=P1^3;
sbit SCLK=P1^4;
sbit DOUT=P1^5;
sbit A0=P1^6;
ulong weight=0;
               
ulong ads1232(uchar ADDR)
{
uchar i;
ulong  adc_val;
adc_val=0;  //?
PDWN=0;
_nop_();
_nop_();
SCLK=0;
_nop_();
A0=ADDR;
_nop_();
PDWN=1;
_nop_();
while(DOUT==1){;}
_nop_();
_nop_();
_nop_();
_nop_();
for(i=0;i<24;i++)
    {
        adc_val=adc_val<<1;
        SCLK=1;  
        _nop_();
        _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
        if(DOUT==1)
        {
          adc_val+=1;
        }
         SCLK=0;
        _nop_();
  _nop_();
        _nop_();  
    }
    _nop_();
    SCLK=1;
    _nop_();
    _nop_();
    SCLK=0;
return adc_val;
}
void weight_adc()
{
ad_data_buff[0]=ads1232(1);
ad_data_buff[1]=ads1232(1);
  
weight=ad_data_buff[0]+ad_data_buff[1];
T_ad_flag=0;
TR0=1;
}

void time0()interrupt 1
{

TH0=0x3c;
TL0=0xB0;
a++;
if(a>9)
  {
   a=0;
   T_ad_flag=1;
   TR0=0;
  }
}

/**************************主程序*************************/

void main()
{
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
//DOUT=1;
ET0=1;
EA=1;
TR0=1;
while(1)
  {
  
    if(T_ad_flag)
   {
    weight_adc();
   }
  }   
}

相关帖子

沙发
liuzhmx|  楼主 | 2011-6-4 21:05 | 只看该作者
我调试了好几天,似乎dout一直是高电平

使用特权

评论回复
板凳
liuzhmx|  楼主 | 2011-6-5 21:15 | 只看该作者
哪位高手帮我看看呀

使用特权

评论回复
地板
timixiaoyouxi| | 2020-1-15 11:33 | 只看该作者
liuzhmx 发表于 2011-6-5 21:15
哪位高手帮我看看呀

我想问一下,这个ADS1232的时序读取,不是低电平读取数据吗?你怎么去看他的时序图,数据检索时序图

使用特权

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

本版积分规则

个人签名:liuzhmx

0

主题

7

帖子

1

粉丝