蓝桥杯单片机EEPROM检测是否是首次上电读取

本文介绍了一种使用IIC协议实现的EEPROM读写方法,通过首次上电检测和flag标志位管理,确保数据的正确写入并在首次启动时提供默认值。文章详细描述了如何在主函数和处理程序中调用相关函数以进行数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现原理

        在读取EEPROM中的数据之前,先对一个目标地址连续读取两个数据,这个目标地址我用id_add来表示,读取到的两个数与EEPROM_ID[]中存取的两个数据进行比较(这两个数据是随便写的,作为辨识ID),如果读取到的值与设定的ID不一样,则说明是首次上电,EEPROM中还没有我们需要读取的值。

        在第一次写入时引入一个flag标志位,当标志位为0的时候给idd_add发送两个连续的数据,这个数据是EEPROM_ID[]中的,这样就 更新了eeprom中id_add的值,再让flag+1,使每次上电只更新一次。

使用方法

先是和之前蓝桥杯模版的eeprom代码一样,在iic中添加

void EEPROM_Write(unsigned char *EEPROM_String, unsigned char addr, unsigned char num)
{
	IIC_Start();
	IIC_SendByte(0xA0);
	IIC_WaitAck();
	
	IIC_SendByte(addr);
	IIC_WaitAck();	
	
	while(num--)
	{
		IIC_SendByte(*EEPROM_String++);	
		IIC_WaitAck();	
		IIC_Delay(200);
	}
	IIC_Stop();
}

void EEPROM_Read (unsigned char *EEPROM_String, unsigned char addr, unsigned char num)
{

	IIC_Start();
	IIC_SendByte(0XA0);
	IIC_WaitAck();
	
	IIC_SendByte(addr);
	IIC_WaitAck();	

	//-------------先用写的形式访问,再用读的形式访问

	IIC_Start
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值