• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

【求助】 这个IIC总线拓展EEPROM的项目哪里出错!

坚持比什么都难 2015-05-11 浏览量:977

检查了N边了,实在看不出哪里有错。仿真就是不成功::

一下是程序代码:

#include
#define uchar unsigned char
#define uint  unsigned int
sbit scl=P2^5;
sbit sda=P2^6;
uchar a;
void delay1(uint x)//ÑÓʱ³ÌÐò0
{ uchar y,z;
for(y=x;y>0;y--)
for(z>110;z>0;z--);
 

void delay()
{ ; ; }           //ÑÓʱ³ÌÐò1£¬Î¢Ð¡ÑÓʱ



void IICstop()   //IICÖÕÖ¹ÐźÅ
  {
   sda=0;delay();
   scl=1;delay();
   sda=1;delay();
  }  
void IICstart()   //IICÆðʼÐźÅ
  {
   sda=1;delay();
   scl=1;delay();
   sda=0;delay();
  }  

void respons()
{uchar i;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
  }
  
void init_iic()//IIC³õʼ»¯
  {
  sda=1;delay();
    scl=1;delay();
  }
void write_iicbyte(uchar date)//IICдһ¸ö×Ö½Ú
  {
 uchar i,temp;
 temp=date;
 
 for(i=0;i<8;i++)
 {

temp=temp<<1;
scl=0;
    delay();
sda=CY;
  delay();
  scl=1;
  delay();
 
}
scl=0;
delay();
 sda=1;
 delay();
  }
uchar read_byte()//IIC¶ÁÒ»¸ö×Ö½Ú
  {
 uchar i,j,k;

 scl=0;
 delay();
sda=1;
delay();
 for(i=0;i<8;i++)
 {
  scl=1;
delay();
if(sda==1)
j=1;
else
j=0;
      k=(k<<1)|j;
scl=0;
delay();
    }
 return k;
  }
void write_add(uchar address,uchar date)
{
   IICstart();
   write_iicbyte(0xa0);
   respons();
   write_iicbyte(address);
   respons();
   write_iicbyte(date);
   respons();
IICstop();  
}
uchar read_add(uchar address)
{
   uchar date;
   IICstart();
   write_iicbyte(0xa0);
   respons();
   write_iicbyte(address);
   respons();
   IICstart();
   write_iicbyte(0xa1);
   respons();
   date=read_byte();
   IICstop();
   return date;
}
void main()
{ init_iic();
write_add(0x03,0x55);
  delay1(100);
  read_add(0x03);
  a=read_add(0x03);
P0=a;
while(1);

}

    这是仿真的电路图



0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 怪了还真读不出来,但是换成24C02C又能读出来
    • 发布于 2015-05-11
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7

  • 对不起版主,我没说清楚。那个我只是给EEPROM储存一个0x55的字节再把它读出来赋给P3口  但是P3口始终全是高电平,没有现象。就是想调一下IIC拓展EEprom这个模块能不能正常工作,能麻烦版主再帮忙看下么,真的是没办法了,检查了非常多便了。。
    • 发布于2015-05-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 根据IIC的通信协议仔细检查下各个环节呗
    • 发布于2015-05-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 给你一份可以用的程序

    读不出来肯定是你时序不对,好好对比下

    • 发布于2015-05-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 仿真真的这么不靠谱么,因为要设计个东西,到时候要打板子的,所以就仿真先实验下 
    • 发布于2015-05-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 真的是这样,把我都要快磨死了,仿真这么不靠谱。

            都是I2C的EEPROM,换个器件居然可以。

          不管怎么说,真的十分谢谢你。

    • 发布于2015-05-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

【求助】 这个IIC总线拓展EEPROM的项目哪里出错!