这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » eeprom

共8条 1/1 1 跳转至

eeprom

助工
2011-12-24 16:51:07     打赏

大家帮忙看下代码,为什么写入的是数据是05,而读出来是别的数据?
下面是代码请大家帮忙看看!



void statr()
{
 SDA=1;
 delay1();
 SCL=1;
 delay1();
 SDA=0;
 delay1();
 
 }
 
void stop()
{
 SDA=0;
 delay1();
 SCL=1;
 delay1();
 SDA=1;
 delay1();
  
}
void acknow()
{
 SCL=1;
 delay1();
 if(SDA==0)
 delay1();
 SCL=0;
 delay1(); 
 }
 
void write1byte(unchar addr)
{
 unchar run;
 run=addr;
 
 for(x=0;x<8;x++)
 {
 SCL=0;
 delay1();
 run=run<<1;
 SDA=CY;
 delay1();
 SCL=1;
 delay1();
 }
 SCL=0;
 delay1();
 SDA=1;
 delay1();
}

unchar read1byte()
{
 unchar com;
 for(x=0;x<8;x++)
 {
  SCL=1;
  delay1();
  com=com<<1|SDA;
  SCL=0;
  delay1();
  }
 return(com);
 }



main()
{

statr();
  write1byte(0xa0);
  acknow();
  write1byte(0x00);
  acknow();
  write1byte(0x04);
  acknow();
  write1byte(0x05);
  acknow();
  stop();   
  delay(100);  
  
  statr();
  write1byte(0xa0);
  acknow();
  write1byte(0x00);
  acknow();
  write1byte(0x04);
  acknow();
  
  statr();
  write1byte(0xa1);
  acknow();
  aa=read1byte();
  stop(); 
    
  P2=0X01;
  //P1=0XFD;
  P37=1;  
  P0=tabol[aa];
  P37=0;
  delay(50);
 while(1);




}




关键词: eeprom     delay1    

院士
2011-12-24 16:55:46     打赏
2楼
等待高手替你分析,同盼~~

助工
2011-12-25 00:20:07     打赏
3楼


高工
2011-12-25 00:38:32     打赏
4楼
你的delay1()也贴出来吧,还有你用的mcu型号 是 ?

专家
2011-12-25 10:11:46     打赏
5楼
延时的时间估计有点问题!!!

助工
2011-12-26 22:14:29     打赏
6楼
void delay1()
{;;}


void delay(unsigned int z)
{
 unsigned int x,y;
 for(x=z;x>0;x--)
  for(y=120;y>0;y--);

助工
2011-12-27 20:08:18     打赏
7楼

器件地址写错了!
开发板上A0-A2是接高电平的,
也就是写器件地址应是:
读数据:0XAF   
写操作:0XAE
楼主写成0XA0了,这样肯定数据传输错误


助工
2011-12-27 23:04:35     打赏
8楼

又看了一遍图,是啊,地址写错了,真糟糕!

多谢楼上zhengningwei提醒啊!


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]