求助,DS12CR887读不到数据

[复制链接]
 楼主| qufo 发表于 2010-4-17 11:22 | 显示全部楼层 |阅读模式
DS12CR887无法得到数据。一步步调试。连秒都读不到。
郁闷,大侠们帮我看看代码哪里错了。

用STC89C52的 P0接 DS12CR887的AD(数据线),其他的接中 P2上。

因为P1接了LED,所以,如果读到的话,应该会使 LED点亮,并且每秒会有变化。

现在的情况是。LED全亮!而且一直全亮!

MD,这是怎么回事呀

代码如下  代码:#include "reg52.h"
#include "intrins.h"
#include "absacc.h"
#define uchar unsigned char
#define uint  unsigned int
#define NOP _nop_;
#define AD P1;
uchar cen,year,month,day,hour,min,second;
sbit SQW=P2^0;
sbit IRQ=P2^1;
sbit DS=P2^2;
sbit RW=P2^3;
sbit AS=P2^4;
sbit CS=P2^5;


void delay(uint z)
{
        uint x,y;
        for (x=z;x>0;x--)
        {
                for (y=110;y>0;y--)
                {
                        ;
                }
        }
}

void Write(uchar add,uchar dat)
{
        CS=0;
        DS=1;
        RW=1;
        AS=1;
        P0=add;
        AS=0;
        RW=0;
        P0=dat;
        RW=1;
        AS=1;
        CS=1;
}


uchar Read(uchar add)
{
        uchar dat;
        CS=0;
        RW=1;
        DS=1;
        AS=1;
        P0=add;
        AS=0;
        DS=0;
        P0=0xff;
        dat=P0;
        DS=1;
        AS=1;
        CS=1;
        return dat;
}


void init()
{
        AS=0;
        DS=0;
        RW=0;
        Write(0x0a,0x20);
}

void GetData()
{
        cen=Read(32);
        year=Read(9);
        second=Read(0);
}

void main()
{
        delay(30);
        init();
        delay(30);
        while(1)
        {
                //GetData();
                second=Read(0);
                P1=second;
        }
}
ddtx 发表于 2010-4-17 11:47 | 显示全部楼层
操作没有延时?
 楼主| qufo 发表于 2010-4-17 12:05 | 显示全部楼层
DS12CR887的耗时以ns计,最大操作消耗350ns,而我们的单片机是一个指令最少要1us.

大于其要示的时间,因此不需要延时,这样理解对吗?
 楼主| qufo 发表于 2010-4-17 18:24 | 显示全部楼层
没人理我呀,唉。`
早晨的细雨 发表于 2013-12-25 14:33 | 显示全部楼层
兄弟这个读取问题解决了吗?
yanjiajiao 发表于 2014-1-7 16:09 | 显示全部楼层
P0口有没有接上拉电阻?接上试试会有意想不到的效果!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

21

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部