AT24C64 EEPROM 24C64读写程序详解

需积分: 49 45 下载量 90 浏览量 更新于2024-09-09 收藏 5KB TXT 举报
本资源提供了一个针对24C64 EEPROM的读写程序示例,适用于Atmel公司的AT24C64C系列非易失性存储器。24C64是一种64KB(8K x 8位)的电可擦除只读存储器(Electrically Erasable Programmable Read-Only Memory, EERPROM),它在无电源的情况下仍能保持数据,常用于嵌入式系统中作为持久数据存储。 程序主要包括以下几个部分: 1. 头文件导入:程序引用了REG51.H和intrins.h头文件,可能还有自定义的AT24C64.h文件,用于处理I2C通信协议,这是一种广泛使用的串行接口,用于连接微控制器和其他设备。 2. 数据类型定义:定义了uchar、ushort和uint作为无符号字符、短整型和整型的数据类型,分别对应字节、字和字节对操作。 3. 输入/输出引脚声明:如SDA(Serial Data)、SCL(Serial Clock)和LED(用于指示状态)等引脚,用于实现I2C通信。 4. 延迟函数:`voidDelay16(unsigned int i)`,用于在程序执行中插入延时,确保I2C信号稳定。 5. I2C初始化函数:`voidI2cInit()`,用于设置I2C控制器的状态,确保正确配置地址线和数据线。 6. I2C起始条件函数:`voidI2cStart()`,当需要发送数据时,首先通过拉低SDA引脚并保持SCL高电平来启动一次I2C传输。 7. I2C停止条件函数:`voidI2cStop()`,传输结束时通过释放SDA引脚,并在SCL上施加一个拉高脉冲,从而终止I2C传输。 8. 发送确认信号函数:`voidSendAcknowledge(bit ack)`,用于在接收数据后发送应答信号,表示已成功接收。 9. I2C发送单个字节函数:`bit I2cSentByte(uchar byteData)`,此函数用于实际发送一个字节数据,并可能根据接收到的应答信号判断传输是否成功。 该程序的核心是通过I2C通信协议与24C64 EEPROM交互,实现数据的读取和写入操作。用户需要根据具体应用调整参数、数据和I/O操作,以完成对24C64的存储操作。例如,为了读取存储器中的数据,可以先进行I2CStart(),然后选择正确的地址,读取数据,发送ACK,最后调用I2cStop()。写入数据则涉及类似的步骤,但还需要先写入数据到EEPROM的内存地址,然后等待确认信号。 这个程序为开发人员提供了一个基础框架,以便在嵌入式系统中集成24C64 EEPROM的I2C控制,这对于许多需要非易失性存储的项目来说是必不可少的。