小白求助。关于EEPROM 跪求大神指点

2019-07-15 20:25发布

#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit scl=P2^1;
sbit sda=P2^0;
sbit P26=P2^6;
uchar count;

uchar code DSY_CODE[]={0x0c,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

void  delay5us()
{ ;;}

void delayms(uint ms)
{
   uchar t;
   while(ms--)
   for(t=0;t<120;t++);
}

void init()
{
   sda=1;
   delay5us();
   scl=1;
   delay5us();
}


void start()
{
   sda=1;scl=1;delay5us();
   sda=0;delay5us();scl=0;
}

void stop()
{
   sda=0;scl=0;delay5us();
   scl=1;delay5us();sda=1;
}

void rack()
{
   sda=1;delay5us();scl=1;delay5us();scl=0;
}

void no_ack()
{
   sda=1;scl=1;delay5us();
   scl=0;sda=0;
}

void write_byte(uchar byte)
{
   uchar i;
   for(i=0;i<8;i++)
   {
      byte<<=1;
          sda=CY;
          _nop_();
          scl=1;
          delay5us();
          scl=0;
   }
   rack();
}

uchar receive_byte()
{
   uchar i,d;
   for(i=0;i<8;i++)
   {
      scl=1;d<<=1;
          d|=sda;
          scl=0;
   }
   return d;
}

void write_random_address_byte(uchar add,uchar dat)
{
   start();
   write_byte(0xa0);
   write_byte(add);
   write_byte(dat);
   stop();
   delayms(10);
}

uchar read_current_address_data()
{
   uchar dat;
   start();
   write_byte(0xa1);
   dat=receive_byte();
   no_ack();
   stop();
   return dat;
}

uchar random_read(uchar addr)
{
   start();
   write_byte(0xa0);
   write_byte(addr);
   stop();
   return read_current_address_data();
}


void mian()
{
   init();
   while(1)
   {
   if (P26==0)
   {
   write_random_address_byte(0x00,1);
   delayms(100);
   count=random_read(0x00);
   P1=DSY_CODE[count];
   }
  }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
小熊猫px
1楼-- · 2019-07-16 00:57
学E方ROM 好几天了,协议很清楚,可是这程序就是调不出来,求前辈指点啊啊啊啊  
小熊猫px
2楼-- · 2019-07-16 01:26
 精彩回答 2  元偷偷看……
BBOYBL
3楼-- · 2019-07-16 05:08
uchar read_current_address_data()
{
   uchar dat;
   start();
   write_byte(0xa1);
   dat=receive_byte();
   no_ack();
   stop();
   return dat;
}

uchar random_read(uchar addr)
{
   start();
   write_byte(0xa0);
   write_byte(addr);
   stop();
   return read_current_address_data();
}楼主能否注释一下这几句?RETURN 一个函数?
小熊猫px
4楼-- · 2019-07-16 08:52
BBOYBL 发表于 2014-3-29 20:40
uchar read_current_address_data()
{
   uchar dat;

读这段程序是参考我们教材的,这儿的确错误了   谢谢你啦。  
paopaotaobao
5楼-- · 2019-07-16 11:25
我刚做了一个小项目,里面用2402做的掉电保护数据,调通了哈
小熊猫px
6楼-- · 2019-07-16 14:09
paopaotaobao 发表于 2014-3-29 22:03
我刚做了一个小项目,里面用2402做的掉电保护数据,调通了哈

程序可否发出来参考参考?

一周热门 更多>