打印

24c04的读问题,可用程序现在不能读了

[复制链接]
1037|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tcc8073|  楼主 | 2014-2-28 16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, ST, FOR, RS, rc
24c04的读问题,可用程序现在不能读了,写正常,但是读不可以,麻烦有经验的高手指点下
uchar onebyte(uchar cmd, uchar da)
{
  uchar step,i,k;
  step=0;
  if(cmd==0)//写
  {
          step=da;
        for(i=0;i<8;i++)
        { SCL=0;
          step=step<<1;
          SDA=CY;
          delayxus(10);
          SCL=1;
          delayxus(10);
        }
        SCL=0;
        delayxus(5);
        return da;
  }
  else if(cmd==1)//读
  {        SCL=0;
    delayxus(5);
          for(i=0;i<8;i++)
        { SCL=1;
          delayxus(10);
          if(SDA==1)k=1;
          else k=0;
          step=step<<1;
          step=step|k;
          delayxus(10);
          SCL=0;
        }
        delayxus(5);
        return step;
  }
}

void start(void)
{
  delayxus(6); SDA=1;
  delayxus(6); SCL=1;
  delayxus(6); SDA=0;
  delayxus(6); SCL=0;
}

uchar ack(uchar val)
{
  uchar rtn;
  delayxus(6); SDA=val;                                                                               
  delayxus(6); SCL=1;
  delayxus(6); if(val!=0) rtn=SDA;
  delayxus(6); SCL=0; SDA=1;
  return(rtn);
}

void stop(void)
{
  delayxus(6); SCL=0;
  delayxus(6); SDA=0;
  delayxus(6); SCL=1;
  delayxus(6); SDA=1;
}

uchar random_r(uchar page, uchar addr)
{
  uchar da;
  page=((page<<1)&0x0f)|0xa0;   /* calculate device address */
  da=0;
  loop: start();
  onebyte(0, page);
  if(ack(1)==1) goto loop;
  onebyte(0, addr);
  if(ack(1)==1) goto loop;

  page|=0x01;
  loop1: start();
  onebyte(0, page);
  if(ack(1)==1) goto loop1;
  da=onebyte(1, 0);
  ack(1);
  stop();
  return(da);
}

相关帖子

沙发
tcc8073|  楼主 | 2014-3-25 21:21 | 只看该作者
已经解决,是我的硬件有点问题,用来测试的那块板有点问题,接触不太好

使用特权

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

本版积分规则

个人签名:诚信,务实,专业,创新

179

主题

1359

帖子

7

粉丝