导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]AT24C256页读程序不行,读出来的数据只有第一个

* 36051: [求助]AT24C256页读程序不行,读出来的数据只有第一个字节是正确的,请教DX指点

   oyzhg 
oyzhg发表的帖子 

 [求助]AT24C256页读程序不行,读出来的数据只有第一个字节是正确的,请教DX指点
//下面的调用方式都试过了
//ReadIIC_24CXX(0x00,0xa0,kk,16);
//ReadIIC_24CXX(0x00,0xa0,kk,64);

unsigned char ReadIIC_24CXX(uint address,uchar ID_A1A0,uchar *p,uchar lenth)

 unsigned char address_in_page; //page
 unsigned char ddata=0;
 unsigned char i=8;
 
 address_in_page=(unsigned char)(address);

 I2CStart();
// write_8bit(0xa0 | page); //
 write_8bit(ID_A1A0);
 ACK();

 write_8bit(address>  >  8);
 ACK();
 //Èç¹ûÊÇ24C01£­24C16£¬µØÖ·ÎªÒ»×Ö½Ú;
 write_8bit(address_in_page);
 ACK(); //ÒÔÉÏÊÇÒ»¸ö¡°ÑÆ¡±Ð´²Ù×÷£¬Ï൱ÓÚÉèÖõ±Ç°µØÖ·

// SCL=1;
// SDA=0;_nop_();
// SDA=1; //STOPÍ£Ö¹Ðźſɼӿɲ»¼Ó

// delay();ÑÓʱ¿É¼Ó¿É²»¼Ó

 I2CStart();
// write_8bit(0xa1); //д´ÓµØÖ·£¬ÖÃΪ¶Áģʽ
 ID_A1A0 = ID_A1A0 + 1;
 write_8bit(ID_A1A0);
 ACK();

 for(;lenth>  0;lenth--)
 {
  while (i--)
  {
   SDA=1;
   ddata  <  <=1;
   SCL=0;_nop_();
   SCL=1;
   if (SDA) ddata|=0x01;
  }
  if(lenth>  1) SendAck();
  *p = ddata;
  p++;
  i = 8;

 }

 SendNotAck();
 I2CStop();

 delay();
 return ddata;
}


发表时间:2003年7月3日16:06:42

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  36062.[详细]没看程序,你能确定你写进去的都是什么吗?
摘要:如果能确定,就试试单个字节读。按说单个字节读如果正确的话,那么页读应当是没有问题的,我就是这样做的。......(100字)
- [ybs777][1697次] 2003年7月3日

[上一篇帖子]:你找张电话机的原理图看看就清楚了。最好找张通话电路是有分离器件构成的原理图;如果实在不行的话,给我E
[下一篇帖子]:[求助]各位大虾,我想用VB与51单片机通信,不知怎么的,单片机老是不能接收从计算机发送过来的数据,