实验说明: T24C01A/AT24C02 为I2C 总线型EEPROM 存储器,容量为1K/2K 位(128/256*8),前读/写时序遵循I2C 总线协议 标准。AT24C01A/AT24C02 内部设有一个控制寄存器,其每一位的含义如下: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 1 0 1 0 A2 A1 A0 R/W 其中 A2/A1/A0 用于选择总线上待访问的 I2C 器件,R/W=1 读操作,R/W=0 写操作;从上述时序可以看出,I2C 总线上最多可以扩展 23=8 片同样的 1K/2K 容量EEPROM 存储器或者可以扩展 1 片容量为16K Bits 的 EEPROM 存储器。如果扩展 8 片 2K 以内容量的 EEPROM存储器,每片存储器将对应一个地址,这个由于实验仪上的 AT24C01A/AT24C02 的 A2/A1/A0引脚全部接地,等效为实验仪上的 AT24C01A/AT24C02 的地址为0,所以在实验中读写控制字分别为:0x a1/0x a0 实验要求 利用实验仪上的 I2C 总线器件 AT24C01A/AT24C02,编写I2C 总线读写程序并自行验证程序的正确性。 c 语言: /* 实验四十二 IIC 总线24C02 读写 */ /* C51 */ #inclu de #inclu de /* ********************************************************** 24C01/02 为IIC 总线EEPROM 存储器, 容量为1k 位(128 * 8) ************************************************************/ /* ********************************************************** EEPROM 控制字节格式: [1, 0, 1, 0, A2, A1, A0, (R/W)], 其中 R/W=1 读,R/W=0 写; 由于实验仪上的 AT24C01A(AT24C02) 的 A2/A1/A0 全部接地, 所以读/写控制字分别为:0x a1/0x a0 ************************************************************/ #define WriteDev iceAddress 0x a0 #define ReadDev iceAddress 0x a1 /******************IIC 器件驱动引脚定义**********************/ sbit SCL = P1^0; sbit SDA = P1^1; /***********************简单延时****************************/ void DelayMs(unsigned int number) { unsigned char temp = 112; while(number--!=0) { while(temp--!=0) { } } } /*********************启动IIC 总线***************************/ void Start() { SDA = 1; SCL = 1; SDA = 0; SCL = 0; } /*********************停止IIC 总线*************...