24c08分页写,地址如何写进去,比如我要在地址300开始写数据,怎么写,请给出程序,谢谢

2024-12-05 04:11:20
推荐回答(1个)
回答1:

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

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

void respons()
{
uchar i=0;
scl=1;
delay();
while((sda==1)&&(i<255))i++;
scl=0;
delay();
}

void wr_date(char date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
scl=0;
delay();
temp=(temp<<1);
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
}

uchar re_date()
{
uchar i,num;
for(i=0;i<8;i++)
{
scl=1;
delay();
num=(num<<1)|sda;
delay();
scl=0;
delay();
}
return num;
}

void wr_rea(char address,char date)
{
start();
wr_date(0xa2);//设置为写模式
respons();
wr_date(address); //写数据地址
respons();
wr_date(date); //写数据
respons();
stop();
}

uchar re_rea(char address)
{ uchar date;
start();
wr_date(0xa2);//设置为写模式 A0.A2.A6.A8不同的页
respons();
wr_date(address);//写数据地址
respons();
start();
wr_date(0xa3);//设置为读模式A1 A3 A7 A9对应分页读
respons();
date=re_date();
respons();
stop();

return date;
}

void delay()
{;;}

//****************24c08 写入 读出 地址0x23开始写*********************************
void savesj( uchar code *bcsj ,uchar sjws ,char address )
{ char d,f;
f=sjws/sizeof( *bcsj)-1;// f 为写入的数组长度
wr_rea(address,f);
address=address+1;
delayms(2); //连续读得时候必须要有延时 要不然就会有数据错误
for(d=0;d {
wr_rea(address,bcsj[d]);
address=address+1;
delayms(5);
}

}

void readsj(char address )
{ uchar f,d,h;
f=re_rea(address);
address=address+1;
for (d=0;d { h=re_rea(address);
DisplayOneChar(d,1, h);//1602显示用可以不理会
delayms(1);
address=address+1;

}
}
void main(void)
{
savesj(user,sizeof(user),0X23 ); //保存数据程序user为写入的一个数组入user【】={123} 0X23为写入地址
readsj(0X23); //读出24C08数据程序0X23为开始写的地址

}

本人最近刚用过希望可以帮到你