大容量串行E2PROM AT24C512及其应用
- 格式:doc
- 大小:47.00 KB
- 文档页数:8
串行EEPROM AT24CXX芯片资料AT24CXX是美国ATMEL公司的低功耗CMOS串行EEPROM,典型的型号有AT24C01A/02/04/08/16等5种,它们的存储容量分别是1024/2048/4096/8192/16384位;也就是128/256/512/1024/2048字节;使用电压级别有5V,2.7V,2.5V,1.8V;本文主要介绍常用的AT24C02即256字节存储器的使用;它具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。
外行如图:AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址(实验板中直接接地只有一块器件);第8脚和第4脚分别为正、负电源。
第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。
第7脚为WP写保护端,接地时允许芯片执行一般的读写操作。
接电源端时不允许对器件写。
24C02中带有片内地址寄存器。
每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。
所有字节均以单一操作方式读取。
为降低总的写入时间,一次操作可写入多达8个字节的数据。
;这是将0100H地址中以下的8个数据写到24C02的01H为首址单元中去的汇编程序可直接在实验板上实验。
ORG 0000HSCL BIT P3.7;定义24C02的串行时钟线SDA BIT P3.6;定义24C02的串行数据线LJMP STARTSTART:LCALL STAR;调用MOV R2,#08H;一个数据有8位MOV DPTR,#0100H;定义源数据的位置LOOP:MOV A,#00HMOVC A,@A+DPTRLCALL SDATALCALL ACKJC LOOPINC DPTRDJNZ R2,LOOPLCALL STOP;调用停止子程序STAR:SETB SDASETB SCLNOPNOPNOPNOPCLR SDANOPNOPNOPNOPCLR SCLRETSDATA:MOV R0,#08HLOOP0:RLC AMOV SDA,CNOPNOPSETB SCLNOPNOPNOPCLR SCLDJNZ R0,LOOP0 RETACK:SETB SDA NOPNOPSETB SCL NOPNOPNOPNOPMOV C,SDA CLR SCLRETSTOP:CLR SDA NOPNOPNOPNOPSETB SCL NOPNOPNOPNOPSETB SDANOPNOPNOPRETORG 0100HDB 0A0H,10H,01H,02H,03H,04H,05H,06HEND读写子程序如下:;写串行E2PROM子程序XEPR; R3=10100000(命令1010+器件3位地址+读/写。
如何解决串行E2PROM 24C02在应用中的问题串行E2PROM是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不挥发等特点,在仪器仪表及工业自动化控制中得到大量的应用。
随着世界上各公司对该器件的开发,市场上推出了许多牌号的24C02器件,甚至还有一些冒牌的24C 02器件,这样就使批量生产的单片机控制系统的质量出现时好时坏的问题。
笔者经过大量的设计实践和试验摸索找出了24C02在应用中之所以出现数据被冲掉的原因,并总结了一套保护24C02数据安全的软硬件设计方法。
1. 不同牌号24C02的性能区别24C02与单片机的接口非常简单,如图1所示。
A0,A1,A2为器件地址线,WP为写保护引脚,SCL,SDA为二线串行接口,符合I2C 总线协议。
在一般单片机系统中,24C02 数据受到干扰的情况是很少的,但是随着单片机抗干扰性能的变差,以及恶劣工业环境中单片机系统的应用,一些智能单片机控制系统相继出现24C02数据被冲掉的问题,而且随着单片机的牌号以及24C02的牌号不同而出现不同程度的干扰现象。
以前通过简单的器件之间替换比较,发现不同牌号的24C02其抗干扰性能是不一样的,于是就认定24C02器件存在"质量"好坏的问题。
后来在一次偶然的机会里,发现有些24C02的WP引脚并不起到保护作用,也就是说将WP引脚与CPU输出引脚断开并保持高电平的情况下,CPU仍然能够对24C02中的数据进行修改写入!在惊讶之余,笔者收集了许多不同牌号的24C02进行试验,除了基本的读写功能外,还对地址功能以及WP引脚保护功能进行了全面的检测,发现一种ATMEL(激光印字)以及XICOR牌号的24C02具有全面的符合I 2C总线协议的功能,而有些牌号24C02要么没有WP引脚保护功能,要么没有器件地址功能(即2 片24C02不能共用一个I2C总线),有些甚至两种功能均无。
串行E2PROMAT 24C512 在单片机中应用
1 概述
近年来,以单片机为核心构成的智能仪器仪表与数据采集系统获得了愈来愈
广泛的应用。
传统的数据存储方法均是通过总线型非易失数据存储器来保存采
集的数据。
随着单片机技术的不断发展及各种非总线型单片机的不断涌现,采
用非总线型单片机并配合大容量串行E2PROM 构成的数据存储系统,将是一
种非常好的数据存储方法。
该方法一方面可提高系统的可靠性,另一方面又可
降低系统成本。
AT24C512 是ATMEL 公司新近推出的具有I2C 总线容量达512Kbit(64K 乘以8)的E2PROM,该芯片的主要特性如下:存储容量为65536byte;与100kHz、400kHz、1MHzI2C 总线兼容;100000 次编程/擦写周期;单电源、读写电压为 1.8V~5.5V;ESD 保护电压4kV;数据可保存40 年;写保护功能,当WP 为高电平时,进入写保护状态;CMOS 低功耗技术,最大写入电流为
3mA;128byte 页写入缓存器;自动定时的写周期;具有8 引脚DIP 及20 引脚SOIC 封装等多种封装形式。
2 引脚排列及功能
AT24C512 的DIP 型封装及20 引脚的SOIC 型封装的引脚排列如图1 所示,各个引脚的功能如下:
SCL:串行时钟该引脚为一输入引脚,用于产生器件所有数据发送或接收的
时钟。
SDA:串行数据/地址双向串行数据/地址引脚,用于器件所有数据的发送或
接收。
SDA 是1 个开漏输出引脚,可与其它开漏输出或集电极开路输出进行线接。
AT24C512的工作原理是什么?单片机是怎样对AT24C512中的数据进行系统化管理的?在由单片机构成的数据采集系统及智能仪器仪表当中,往往有大量数据要保存。
随着测控系统数字化的发展,人们对数据存储提出了更高的要求,因而用于存储数据的存储器容量也越来越大。
但是,在增大数据存储量的同时,人们也希望能更便捷高效地操作其中的数据(包括浏览、添加和删除等),即像PC机上管理数据一样简单易行。
然而,单片机以及用于保存数据的芯片本身并没有提供这种功能,为此,需要开发一种用于管理单片机数据的有效方法。
本文在吸取PC机文件管理思想的基础上,以AT24C512为例,构造了一种类似于文件系统的用于管理单片机数据的方法,大大提高了数据操作的效率。
1 AT24C512介绍AT24C512是Atmel公司生产的64KB串行电可擦的可编程存储器,内部有512页,每一页为128字节,任一单元的地址为16位,地址范围为0000~0FFFFH。
它采用8引脚封装,具有结构紧凑、存储容量大等特点,可以在2线总线上并接4片芯片,特别适用于具有大容量数据存储要求的数据采集系统,因此在测控系统中被大量采用。
AT24C512的封装如图1所示,各引脚的功能如下:①A0、A1地址选择输入端。
在串行总线结构中,如需连接4个AT24C512芯片,则可用A0、A1来区分各芯片。
A0、A1悬空时为0。
②SDA双向串行数据输入输出口。
用于存储器与单片机之间的数据交换。
③SCL串行时钟输入。
通常在其上升沿将SDA上的数据写入存储器,而在下降沿从存储器读出数据并送往SDA。
④WP写保护输入。
此引脚与地相连时,允许写操作;与VCC相连时,所有的写存储器操作被禁止。
如果不连,该脚将在芯片内部下拉到地。
⑤VCC电源。
GND接地。
NC悬空。
(1)与单片机接口由于AT24C512沿袭了AT24C系列的接口特性,因此与单片机的连接也可沿袭传统方法。
一般A0、A1、WP接VCC或GND,SCL、SDA接地单片机的P1口,即可实现单片机对AT24C512的操作。
串行E^2PROM 24CXX在单片机系统中的应用
夏勇军;余华芳;刘健;程汉湘
【期刊名称】《武汉化工学院学报》
【年(卷),期】2001(23)4
【摘要】针对 2 4CXX系列串行 E2 PROM,文章详细给出了其编程原理及具体编程环节的时序 ,并结合 1 6位单片机 80 C1 96KC说明了其在单片机系统中的应用 ,同时给出了关键环节的汇编程序代码 .
【总页数】5页(P78-82)
【关键词】串行E^2PROM;单片机;编程时序;芯片;80C196KC
【作者】夏勇军;余华芳;刘健;程汉湘
【作者单位】武汉化工学院自动化系
【正文语种】中文
【中图分类】TP332;TP368.1
【相关文献】
1.串行E2PROM 24CXX在单片机系统中的应用 [J], 夏勇军;余华芳;刘健;程汉湘
2.串行EEPROM 24CXX在单片机系统中的应用技术 [J], 罗忠;冉全
3.串行E^2PROM在8051单片机中的应用 [J], 邵昱;韦彬
4.串行E^2PROM在单片机系统中的应用 [J], 余高明;赵金;万淑芸;杨璐
5.E^2PROM在单片机系统中的应用 [J], 王悦刚
因版权原因,仅展示原文概要,查看原文内容请购买。
9.串行I2C总线E2PROM AT24CXXX的应用这一篇介绍I2C存储器的使用。
主要是介绍AT24CXX系列器件,它分为两类,主要是通过被存储容量地址来分的,一类是AT24C02-AT24C16,它的存储容量从256字节到2048字节。
另一类是AT24C32-AT24C1024,容量从4K-128K。
(理论上好像可以达到最高512K字节容量,但现在网上最高也就能看到AT24C1024也就是128K字节容量)原理:I2C总线是一种用于IC器件之间连接的二线制总线。
它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。
I2C总线接口电路结构如图所示。
SDA和SCL均为双向I/O线,通过上拉电阻接正电源。
当总线空闲时,两根线都是高电平。
连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。
I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。
在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图所示。
当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号;当SCL 线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。
开始和结束信号都是由主器件产生。
在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。
I2C总线的数据传送格式是:在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的,其中4-7位为器件码,如1010就是代表串行E2PROM器件。
1-3位为存储器的片选地址或存储器内的块地址码,如何区分?后面再做详细说明,第8位为方向位(R/W)。
方向位为“0”表示发送,即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读信息。
EEPROM---AT24Cxx应⽤介绍结论:1、读写AT24CXX芯⽚,根据容量有多种⽅式:⼀、容量为AT24C01~AT24C16,⾸先发送设备地址(8位地址),再发送数据地址(8位地址),再发送或者接受数据。
⼆、AT24C32/AT24C64~AT24C512,⾸先发送设备地址(8位地址),再发送⾼位数据地址,再发送地位数据地址,再发送或者接受数据。
三、容量AT24C1024的芯⽚,是把容量⼀和容量⼆的⽅法结合,设备地址中要⽤⼀位作为数据地址位,存储地址长度是17位。
2、它的设备地址根据容量不同有区别: 1)、AT24C01~AT24C16:这⼀类⼜分为两类,分别为AT24C01/AT24C02和AT24C04~AT24C16;他们的设备地址为⾼7位,低1位⽤来作为读写标⽰位,1为读,0为写。
*1*、AT24C01/AT24C02。
AT24C01/AT24C02的A0、A1、A2引脚作为7位设备地址的低三位,⾼4为固定为1010B,低三位A0、A1、A2确定了AT24CXX的设备地址,所以⼀根I2C线上最⼤可以接8个AT24CXX,地址为1010000B~1010111B。
*2*、AT24C04~AT24C16的 A0、A1、A2只使⽤⼀部分,不⽤的悬空或者接地(数据⼿册中写的是悬空不接)。
举例:AT24C04只⽤A2、A1引脚作为设备地址,另外⼀位A0不⽤悬空,发送地址中对应的这位(A0)⽤来写⼊页寻址的页⾯号,⼀根I2C线上最⼤可以接4个,地址为101000xB~101011xB 2)、AT24C32/AT24C64:和AT24C01/AT24C02⼀样,区别是,发送数据地址变成16位。
注意事项:对AT24C32来说,WP置⾼,则只有四分之⼀受保护,即0x0C00-0x0FFF。
也就是说保护区为1KBytes。
对于低地址的四分之三,则不保护。
所以,如果数据较多时,可以有选择地存储。
AT24C512芯片资料之阳早格格创做AT24C512是ATMEL公司迩去死产的512k位(64K×8位)串止大容量电可揩的可编程保存器EEPROM1.1 AT24C512的主要个性具备如下三种处事电压:5.0 V;2.7 V;1.8 V;里面不妨构造成64 k X 8保存单元;切合单背数据传递I2C协议;具备硬件写呵护战硬件数据呵护功能;具备按页(128字节)写大概按字节读写模式.AT24C512有八个引足.A0、A1:天点采用输进端.正在串止总线结构中,如需对接4个AT24C512芯片,则可用A0、Al去区别各芯片;SCL:串止时钟输.常常正在其降下沿将SDA上的数据写进保存器,而正在下落沿从保存器读出数据并支往SDA;SDA:单背串止数据输进输出心.用于保存器与单片机之间的数据接换;WP:写呵护输进.此引足与天贯串时,允许写支配;与VCC贯串时,所有的写保存器支配被克制.如果没有连,该足将正在芯片内脚下推到天.1.2 AT24C512的处事本理AT24C512里面有512页,每一页为128字节,任一单元的天点为l6位.天点范畴为0000H~FFFFH,可按页写大概字节读写模式.AT24C512的处事状态主要偶尔钟战数据传递、中断战应问等4种.图1是AT24C512的处事时序.AT24C512的所有天点战数据皆是以8位的形式串止传递给保存器大概从保存器读出的.屡屡保存器皆将正在第九个时钟SCL周期时由SDA收整旗号以对付支到的8位数据举止应问.读大概者写进的位数皆是下位正在前,矮位正在后.当EEPROM加进启初状态后,普遍皆需要一个8位的天点字去采用芯片以举止读写.器件天点字由5位0、1组成的下令字战二位天点采用位A1、A0以及一位读/写支配位形成.对付于AT24C512,下令字为“10100”,共一串止总线上不妨对接4个AT24C512器件,那些器件不妨通过天点线A1,A0加以区别.如果惟有一个AT24C512,那么Al、A0皆与0.最矮位为l时表示读支配,为0表示写支配.其要领如下:共时,AT24C512中部引足A1,AO也要相映对接到VCC大概GND.(与器件天点采用位相对付应)2 AT24C512的读写办法战处事时序2.1 写支配AT24C512的写支配有写字节战写页二种办法,共64 KX 8 bit.写字节时常常正在背AT24C512收支设备天点字并接到应问旗号后,还需要收支2个8位天点去采用要写数据的天点,AT24C512接支到那个天点后会应问一个整旗号,而后根据CLOCK写8位数据到AT24C512.保存器接支到数据后共样会返回一个应问旗号.写数据中断后,收出中断下令,AT24C512加进里面计时的写周期,那个里面写周期约需5 Ills.正在写循环历程中,所有的输进皆没有克没有及举止,曲到写中断,EEP—ROM才搞赞同.AT24C512具备128字节动做一页的写页功能,不妨一次性写进一页.写页的初初化历程与写字节的要领基本相共.分歧的是:当写页支配写进一个数据字节后,微统造器没有收停止状态,而是正在应问旗号后接着输进127个字节.每一个字节接支完成后,EEP—ROM照样输出一个整应问旗号.果为一页惟有128个单元,所以数据字的天点矮7位正在接支到一个字节后会自动加1,而下位天点没有变,即页天点没有变.若里面爆收的天点达到了页的鸿沟时,系统将回到页的启初举止写.如果一次要写的字节大于128字节,则最早写进的字节将被覆盖.图2为其写支配过程图.2.2 读支配读支配有目前天点读、随机读、读串三种办法.其初初化历程基础与写支配相共,不过正在设备采用字中的最矮位要改成读而已.正在目前天点读支配办法时,里面数据的天点将脆持正在末尾的读写支配天点加1上,OP只消芯片有电源供给,那个天点将背去脆持着.曲到读到EEPROM的末尾字节后又回到最启初的位子.而随机读支配之前先要背EEPROM写进一个字节天点,然后才搞读.读串支配既不妨是目前天点读,也不妨是随机天点读.当微统造器接支到一个数据字后,会回应一个应问旗号.EEPROM正在接支到应问旗号后会将天点加1,接着输出下一个字节.而当微统造器接支到数据但是没有回应问旗号时,读历程中断.。
大容量串行E2PROM AT24C512及其应用2004年12月13日浏览0次1概述近年来,以单片机为核心构成的智能仪器仪表与数据采集系统获得了愈来愈广泛的应用。
传统的数据存储方法均是通过总线型非易失数据存储器来保存采集的数据。
随着单片机技术的不断发展及各种非总线型单片机的不断涌现,采用非总线型单片机并配合大容量串行E2PROM构成的数据存储系统,将是一种非常好的数据存储方法。
该方法一方面可提高系统的可靠性,另一方面又可降低系统成本。
AT24C512是ATMEL公司新近推出的具有I2C总线容量达512Kbit(64K×8)的E2PROM,该芯片的主要特性如下:存储容量为65536byte;与100kHz、400kHz、1MHzI2C总线兼容;100000次编程/擦写周期;单电源、读写电压为1.8V~5.5V;ESD保护电压>4kV;数据可保存40年;写保护功能,当WP为高电平时,进入写保护状态;CMOS低功耗技术,最大写入电流为3mA;128byte页写入缓存器;自动定时的写周期;具有8引脚DIP及20引脚SOIC封装等多种封装形式。
2引脚排列及功能AT24C512的DIP型封装及20引脚的SOIC型封装的引脚排列如图1所示,各个引脚的功能如下:SCL:串行时钟该引脚为一输入引脚,用于产生器件所有数据发送或接收的时钟。
SDA:串行数据/地址双向串行数据/地址引脚,用于器件所有数据的发送或接收。
SDA是1个开漏输出引脚,可与其它开漏输出或集电极开路输出进行线接。
WP:写保护当引脚WP连接到VCC时,所有存储数据变为写保护。
当引脚WP接VSS时,则允许器件进行正常读写操作。
A0,A1:器件地址输入这两个引脚为硬件连线或者不连接,通过连接VCC或VSS的组合可使单总线最多寻址4个AT24C512,当这些引脚没有连接时其默认值为0。
(a) SOIC封装(b) DIP封装图1 AT24C512引脚排列图3器件功能描述AT24C512是具有I2C总线的存储芯片,因此该器件必须严格遵守I2C总线传输协议。
I2C总线简单的硬件接口是以复杂的时序及软件编程为代价的,下面首先对该器件的时序进行描述。
(1)起停信号时钟线保持高电平期间,数据线电平从高到低的跳变代为I2C总线的起始信号。
时钟线保持高电平期间,数据线电平从低到高的跳变代为I2C总线的停止信号。
(2)器件寻址主器件通过发送1个起始信号启动发送过程,然后发送它所需要寻址的从器件地址,8位从器件地址的高5位固定为10100,接下来的2位(A0,A1)为器件的地址位,因此最多可以将4个AT24C512连接到同一总线上使存储容量扩展至256Kbyte。
注意,这两位必须与A0和A1两引脚的输入状态相对应,从器件地址的最低位为读写控制位,“1”表示对从器件进行读操作,“0”表示对从器件进行写操作,在主器件发送起始信号和从器件发送地址字节后,AT24C512监测总线并当其地址与发送的从地址相符时发出1个应答信号(通过SDA线),AT24C512再根据读写控制位(R/W)的状态进行读写操作,从器件地址字节内容如表1所示。
表1 从器件地址内容DB7DB6DB5DB4DB3DB2DB1DB011A1A0R/W(3)应答信号I2C总线传送数据时,每成功传送1个字节,接收器都必须产生1个应答信号,应答的器件在第9个时钟周期将SDA线拉低表示其已收到1个8位数据。
AT24C512在接收到起始信号和从器件地址之后产生应答信号,如果器件已选择了写操作,则在每接收1个8位字节之后1个应答信号。
当该器件工作于读模式时,在发送1个8位数据后释放SDA线并监测1个应答信号,一旦接收到应答信号,则继续发送数据,若主器件没有发送应答信号,器件停止传送数据并等待1个停止信号。
掌握了AT24C512的操作时序后再配合一定的地址/数据信息就可完成该器件的读写操作。
(4)写操作写操作可分为字节写和页写两种写入方式。
通常E2PROM的写入占用一定的写入时间,但AT24C51 2内部设有128字节的页写缓存,使得操作该器件如同操作SRAM一样方便,页面缓存使得两种写入方式的操作过程相同,区别仅在于写入数据字节的多少。
下面以字节写入为例介绍写操作过程。
在字节写操作模式下,主器件首先给从器件发送起始信号和从器件地址信息,在从器件送回应答信号后,主器件在发送两字节的16位地址信息写入到AT24C512地址指针,主器件在收到从器件的应答信号后,再发送1个字节的数据到被寻址的存储单元,从器件在此应答,并在主器件产生停止信号后开始内部数据擦写,在内部擦写过程中,从器件不再应答主器件的任何请求,字节写入操作时序如图2所示。
图2 字节写操作时序(5)读操作读操作分为立即读、随机读和连续读。
立即读是在最后操作字节的地址上加1进行读取,而连续读则是在立即读和随机读起动后主器件通过应答信号响应完成多个数据的读取,在主器件发出停止信号后结束读取过程。
下面以随机读为例介绍读操作过程。
随机读操作允许主器件对存储器的任意字节进行读操作。
操作过程为主器件首先发送起始信号,从器件地址和欲读取字节的地址执行1个伪写操作,此时R/W位应置0,在AT24C512应答后,主器件重新发送起始信号和从器件地址,此时R/W位应置1,AT24C512响应并发送应答信号,然后输出所要求的1个8位字节数据。
主器件不发送应答信号,但产生1个停止信号。
字节读操作时序如图3所示。
4应用AT24C512与AT89C2051单片机的硬件连接电路如图4所示。
这里使用了2个AT24C512组成寻址空间为128K字节的E2PROM存储器电路。
其中U2的器件地址为A0H,存储地址空间为0000-0FF FFH;U3的器件地址为A2H,存储地址空间为0000-0FFFFH。
图3 字节读操作时序由于AT89C2051不具有I2C总线,因此采用P1.0和P1.1口线来模拟I2C总线,AT24C512的S DA和SCL为开漏输出,故接入10kΩ的上拉电阻器。
下面是与上述电路配套的E2PROM读写程序:;内存数据定义BitCnt DATA 30H;读/写数据位数计数器ByteCnt DATA 31H;读/写数据字节数计数器SlvAddr DATA 32H;E2PROM器件地址SubAdrl DATA 33H;存储单元地址高8位SubAdr2 DATA 34H;存储单元地址低8位ReadDat DATA 50H;读操作数据缓冲区WriteDat DATA 40H;写操作数据缓冲区;端口位定义SDA BIT P1.0;模拟I2C数据传送位SCL BIT P1.1;模拟I2C时钟控制位ACK BIT 20H;读非应答标志;主程序MAIN: MOV SP #60H;设堆栈Write: MOV SlvAdr, #A0H;选择1个器件地址MOV ByteCnt, #08H;设写入数据长度为8字节MOV SubAdr1, #00H;设写入单元首址为0020HMOV SubAdr2, #20H;LCALL WriteData ; 写数据……Read: MOV Slvadr, #A0H;选择1个器件地址MOV Bytecnt, #08H;设读出数据长度为8字节MOV SubAdr1, #00H;设读出单元MOV SubAdr2, #20H;首址为0020HLCALL ReadData; 读数据……WriteData:LCALL Start; I2C总线起始条件MOV A,SlvAdr; 取器件地址LCALL writeByte; 发送器件地址MOV A,SubAdr1LCALL writeByte;发送高8位地址MOV A,SubAdr2 LCALLwriteByte;发送低8位地址MOVR0,#WriteDat;取写入数据的首地址Next:MOVA,@R0LCALLwriteByte;写入1字节数据LNCR0;取下1个数据DJNZByteCnt,Next;重复操作直到写完全部数据LCALLStop;发送I2C总线停止条件LCALLDL10ms;延时10ms等待E2PROM内部数据;写完RET;读数据子程序ReadData:LCALLStartMOVA,SlvAdrLCALLWriteByteMOVA,Subadr1LCALLWriteByteMOVA,Subadr2LCALLWriteByteLCALLStart;重复发送I2C总线起始条件MOVA,SlvadrSETBACC.0;R/W位置1 LCALLWriteByteCLRACK;请读非应答标志MOVR0,#RdadData;读缓冲区首址DJNZByteCnt,Next1SJMPLastNext1:LCALLReadByte;接收1个字节数据MOV@R0,A;接收数据送缓冲区INCR0DJNZByteCnt,Next1;重复接收Last:SETBACK;接收最后1个字节数据ACALLReadByteMOV#R0,ALCALLStopRET上面给出读写操作主程序、页面写入子程序及其多字节读子程序。
受篇幅限制,部分子程序没有给出,读者可根据AT24C512的操作时序自行编制或参阅相关文献。
5结束语由AT24C512与AT89C2051等非总线单片机构成的数据采集存储系统具有体积小、成本低、可靠性高的特点,因而具有很高的应用价值。