请问at24c02能保存几个数据
我想用51单片机结合外部at24c02做一个篮球记分牌,要保存三个数据,分别是蓝队分数,红队分数,还有24秒倒计时时间,然后实现掉电还能继续读出原先的比分和剩余时间,但是...
我想用51单片机结合外部at24c02做一个篮球记分牌,要保存三个数据,分别是蓝队分数,红队分数,还有24秒倒计时时间,然后实现掉电还能继续读出原先的比分和剩余时间,但是我写的这段代码貌似只能保存一个数据,跪求大神解答,代码如下
这是24c02读和写的代码,前面的停止启动应答什么的就不贴了
但貌似只能保存一个数据,我试着将red_point 放到0x00中,这样就只能保存和初始化红队的分数,时间和蓝队的保存不了,上面的只能保存时间。
对了,还有就是at24c02有没有擦除功能的,还是我保存的地址不对,跪求高手解答,谢谢啦
/***********************************************************
函数名称:WrToROM_24C02
函数功能:写数据到rom
入口参数:unsigned char Data:数据,unsigned char Address:地址
出口参数:无
备 注:无
***********************************************************/
void WrToROM_24C02(unsigned char Data,unsigned char Address)
{
// unsigned char i=0;
// unsigned char *PData;
// PData=Data;
Start_24C02();
Send_24C02(0xa0);
Ack_24C02();
Send_24C02(Address);
Ack_24C02();
// for(i=0;i<Num;i++)
// {
Send_24C02(Data);
Ack_24C02();
// }
Stop_24C02();
}
/***********************************************************
函数名称:RdFromROM_24C02
函数功能:从rom读数据到
入口参数:unsigned char Address:地址
出口参数:unsigned char
备 注:无
***********************************************************/
unsigned char RdFromROM_24C02(unsigned char Address)
{
// unsigned char i=0;
// unsigned char *PData;
// PData=Data;
// for(i=0;i<Num;i++)
// {
unsigned char date;
Start_24C02();
Send_24C02(0xa0);
Ack_24C02();
Send_24C02(Address);
Ack_24C02();
Start_24C02();
Send_24C02(0xa1);
Ack_24C02();
date=Read_24C02();
// Scl_24C02=0;
// NoAck_24C02();
Stop_24C02();
return date;
// }
}
下面三个函数都是写数据和读数据到24c02中;
void data_init_read()
{
sec=RdFromROM_24C02(0x00);
red_point=RdFromROM_24C02(0x01);
blue_point=RdFromROM_24C02(0x02);
}
void data_init_write()
{
WrToROM_24C02(24,0x00);
WrToROM_24C02(0,0x01);
WrToROM_24C02(0,0x02);
delay(1000);
data_init_read();
}
void data_after_write()
{
WrToROM_24C02(sec,0x00);
WrToROM_24C02(red_point,0x01);
WrToROM_24C02(blue_point,0x02);
}
但貌似只能保存一个数据,我试着将red_point 放到0x00中,这样就只能保存和初始化红队的分数,时间和蓝队的保存不了,上面的只能保存时间。
对了,还有就是at24c02有没有擦除功能的,还是我保存的地址不对,跪求高手解答,谢谢啦 展开
这是24c02读和写的代码,前面的停止启动应答什么的就不贴了
但貌似只能保存一个数据,我试着将red_point 放到0x00中,这样就只能保存和初始化红队的分数,时间和蓝队的保存不了,上面的只能保存时间。
对了,还有就是at24c02有没有擦除功能的,还是我保存的地址不对,跪求高手解答,谢谢啦
/***********************************************************
函数名称:WrToROM_24C02
函数功能:写数据到rom
入口参数:unsigned char Data:数据,unsigned char Address:地址
出口参数:无
备 注:无
***********************************************************/
void WrToROM_24C02(unsigned char Data,unsigned char Address)
{
// unsigned char i=0;
// unsigned char *PData;
// PData=Data;
Start_24C02();
Send_24C02(0xa0);
Ack_24C02();
Send_24C02(Address);
Ack_24C02();
// for(i=0;i<Num;i++)
// {
Send_24C02(Data);
Ack_24C02();
// }
Stop_24C02();
}
/***********************************************************
函数名称:RdFromROM_24C02
函数功能:从rom读数据到
入口参数:unsigned char Address:地址
出口参数:unsigned char
备 注:无
***********************************************************/
unsigned char RdFromROM_24C02(unsigned char Address)
{
// unsigned char i=0;
// unsigned char *PData;
// PData=Data;
// for(i=0;i<Num;i++)
// {
unsigned char date;
Start_24C02();
Send_24C02(0xa0);
Ack_24C02();
Send_24C02(Address);
Ack_24C02();
Start_24C02();
Send_24C02(0xa1);
Ack_24C02();
date=Read_24C02();
// Scl_24C02=0;
// NoAck_24C02();
Stop_24C02();
return date;
// }
}
下面三个函数都是写数据和读数据到24c02中;
void data_init_read()
{
sec=RdFromROM_24C02(0x00);
red_point=RdFromROM_24C02(0x01);
blue_point=RdFromROM_24C02(0x02);
}
void data_init_write()
{
WrToROM_24C02(24,0x00);
WrToROM_24C02(0,0x01);
WrToROM_24C02(0,0x02);
delay(1000);
data_init_read();
}
void data_after_write()
{
WrToROM_24C02(sec,0x00);
WrToROM_24C02(red_point,0x01);
WrToROM_24C02(blue_point,0x02);
}
但貌似只能保存一个数据,我试着将red_point 放到0x00中,这样就只能保存和初始化红队的分数,时间和蓝队的保存不了,上面的只能保存时间。
对了,还有就是at24c02有没有擦除功能的,还是我保存的地址不对,跪求高手解答,谢谢啦 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询