Eeprom的读写
所看过的对24系列I2C读写时序描述最准确最容易理解的资料,尤其是关于主从器件的应答描述和页写描述,看完后明白了很多。
关于页写的描述,网络上绝大部分范程都没提到页写时的数据地址必须是每页的首地址才能准确写入,而且如果写入超过一页的数据会循环覆盖当前页的数据。
关于IIC总线I2C总线:i2c总线是Philips 公司首先推出的一种两线制串行传输总线。
它由一根数据线(SDA)和一根时钟线(SDL)组成。
i2c总线的数据传输过程如图3所示,基本过程为:1、主机发出开始信号。
2、主机接着送出1字节的从机地址信息,其中最低位为读写控制码(1为读、0为写),高7位为从机器件地址代码。
3、从机发出认可信号。
4、主机开始发送信息,每发完一字节后,从机发出认可信号给主机。
5、主机发出停止信号。
I2C总线上各信号的具体说明:开始信号:在时钟线(SCL)为高电平其间,数据线(SDA)由高变低,将产生一个开始信号。
停止信号:在时钟线(SCL)为高电平其间,数据线(SDA)由低变高,将产生一个停止信号。
应答信号:既认可信号,主机写从机时每写完一字节,如果正确从机将在下一个时钟周期将数据线(SDA)拉低,以告诉主机操作有效。
在主机读从机时正确读完一字节后,主机在下一个时钟周期同样也要将数据线(SDA)拉低,发出认可信号,告诉从机所发数据已经收妥。
(注:读从机时主机在最后1字节数据接收完以后不发应答,直接发停止信号)。
注意:在I2C通信过程中,所有的数据改变都必须在时钟线SCL为低电平时改变,在时钟线SCL为高电平时必须保持数据SDA信号的稳定,任何在时钟线为高电平时数据线上的电平改变都被认为是起始或停止信号。
作为一种非易失性存储器(NVM),24系列EEPROM使用的很普遍,一般作为数据量不太大的数据存储器。
下面总结一下其应用的一些要点。
从命名上看,24CXX中XX的单位是kbit,如24C08,其存储容量为8k bit,即1k Byte=1024 Byte。
一、工作条件1.工作电压(VCC)24CXX:4.5V-5.5V24CXX-W:2.5V-5.5V24CXX-R:1.8V-5.5V2.输入电平定义(VIH,VIL)VIH:0.7VCC-VCC+1VIL:-0.45V-0.3VCC二、硬件连接1.上拉电阻RP的取值由于I2C总线电容要满足小于400pf的条件。
从以下波形可以看出,上拉电阻越大,总线的电容越小,可以实现的数据传输率就越大,可达400khz。
[点击图片可在新窗口打开]2.写保护脚芯片写保护脚是高电平有效,即WP接高电平时禁止写入3.地址脚24C01/24C02 三个地址脚(E0,E1,E2)都有效,24C04只有E2,E1有效,24C08只有E2有效,24C16三个地址脚都无效,如下图所示,所谓地址脚无效是指不需要接入电路中(NC ,not connected),其对应的地址位要用来表示要操作的字节的高位地址。
[点击图片可在新窗口打开]24C32/24C64三个地址脚都有效;24C128/24C256/24C512的地址脚E1和E0有效,其余为NC;24C1024的地址脚E1有效,其余为NC。
三、寻址方式1.器件地址当总线上连接多个I2C器件时,需要对器件进行寻址。
器件地址如下表所示,其中E2,E1,E0是指三个引脚的状态,取决于是接地还是接高电平,R/W为1则为读操作,为0则为写操作。
A8,A9,A10,A16指的是所要操作的字节地址的高位,后面会提到。
芯片bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit024C01/02/21 1 0 1 0 E2 E1 E0 R/W24C04 1 0 1 0 E2 E1 A8 R/W24C08 1 0 1 0 E2 A9 A8 R/W24C16 1 0 1 0 A10 A9 A8 R/W24C32/64 1 0 1 0 E2 E1 E0 R/W24C128/256/512 1 0 1 0 0 E1 E0 R/W24C1024 1 0 1 0 0 E1 A16 R/W2.字节地址在对芯片内的某一字节或一连续地址进行读写操作时,需要制定其地址或首字节的地址,不同芯片地址有不同的表示方式,如下表所示,其中有些芯片的地址位的高位存储在器件地址中。
芯片地址位数地址范围24C01 bit7-bit0 0x00-0x7F24C02 bit7-bit0 0x00-0xFF24C04 A8,bit7-bit0 0x00-0x1FF24C08 A9,A8,bit7-bit0 0x00-0x3FF24C16 A10,A9,A8,bit7-bit0 0x00-0x7FF24C32 bit15-bit8,bit7-bit0 0x00-0xFFF24C64 bit15-bit8,bit7-bit0 0x00-0x1FFF24C128 bit7-bit0 0x00-0x3FFF24C256 bit7-bit0 0x00-0x7FFF24C512 bit7-bit0 0x00-0xFFFF24C1024 A16,bit15-bit8,bit7-bit0 0x00-0x1FFFF四、读写时序EEPROM一般在电路中做从器件,以下的发送和接收都是针对主器件说明的,开始和结束条件也是由主器件发出。
1、单字节写操作START->发送器件地址->ack->发送字节地址->ack->发送数据->ack-> STOP2、按“页”写操作,“页”是指高位地址一样一组数据,对于24C01/02/04/08/16,一页数据为16字节,一页指高四位地址一样的一组数据。
对于24C32/24C64,一页数据为32字节,一页指高11位地址一样的一组数据。
START->发送器件地址->ack->发送页首地址->ack->发送数据->ack.........-> 发送数据->ack -> STOP3、随机单字节读操作START->发送器件地址(写)->ack->发送字节地址->ack->START->发送器件地址(读)->ack ->接收数据->noack->STOP4、当前单字节读操作,“当前”指的是前面进行过读操作,但是没有STOP,芯片内部“指针”指的字节即为“当前”字节。
START->发送器件地址(读)->ack->接收数据->noack->STOP5、随机连续字节读操作START ->发送器件地址(写)->ack->发送字节首地址->ack->START->发送器件地址(读)-> ack->接收数据->ack->接收数据->ack.........接收数据(最后字节)->noack->STOP6、当前连续字节读操作START->发送器件地址(读)->ack->接收数据->ack->接收数据->ack...............接收数据(最后字节)->noack->STOP关于页写的道理。
A T24Cxx系列的EEPROM为了提高写效率,提供了页写功能,内部有个一页大小的写缓冲RAM,地址范围当然就是从00到一页大小,发生写操作时,开始送入的地址对应的页被选中,并将其内容映像到缓冲RAM,数据从低端地址对应的缓冲RAM地址开始修改,超过这个地址范围就回到00,写完后,就会把开始确定的EEPROM页擦除,再把一整页RAM数据写入。
所有写数据都发生在开始写地址时确定的页上。
如页容量为128,一页都是从00开始按128字节分成一个个的页,0页就是0~7F,1页就是80~FF,类推,边界就是128字节的整数倍地址。
页RAM的地址范围为7位00~7F,写入时高端地址就是页号。
发生写操作,开始送入的地址对应的页被锁存,后续不论写多少,都在这个页中,只是一个页内的地址进行加一,超过就归零开始。
从F0开始写32个字节,那么开始送入的地址为F0,就会锁定在1号页(第2个页)上,底端7位页内部地址开始从70H开始写,到达7F时回到00再到10H,也就是写在了F0~FF,80~8F。
也就是,从01开始写也只能到7F,再往80写就跑到00上去了,这就是写操作的翻卷,datasheet 上都有说明。
就是从边界前写两个字节也要分两次写。
页是绝对的,按整页大小排列,不是从开始写入的地址开始算。
读没有页的问题,可以从任意地址开始读取任意大小数据,只是超过整个存储器容量时地址才回卷。
但一次性访问的数据长度也不要太大。
所以分页的存储器要做好存储器管理,尽量同时读写的数据放在一个页上。
关于页写的道理。
A T24Cxx系列的EEPROM为了提高写效率,提供了页写功能,内部有个一页大小的写缓冲RAM,地址范围当然就是从00到一页大小,发生写操作时,开始送入的地址对应的页被选中,并将其内容映像到缓冲RAM,数据从低端地址对应的缓冲RAM地址开始修改,超过这个地址范围就回到00,写完后,就会把开始确定的EEPROM页擦除,再把一整页RAM数据写入。
所有写数据都发生在开始写地址时确定的页上。
如页容量为128,一页都是从00开始按128字节分成一个个的页,0页就是0~7F,1页就是80~FF,类推,边界就是128字节的整数倍地址。
页RAM的地址范围为7位00~7F,写入时高端地址就是页号。
发生写操作,开始送入的地址对应的页被锁存,后续不论写多少,都在这个页中,只是一个页内的地址进行加一,超过就归零开始。
从F0开始写32个字节,那么开始送入的地址为F0,就会锁定在1号页(第2个页)上,底端7位页内部地址开始从70H开始写,到达7F时回到00再到10H,也就是写在了F0~FF,80~8F。
也就是,从01开始写也只能到7F,再往80写就跑到00上去了,这就是写操作的翻卷,datasheet 上都有说明。
就是从边界前写两个字节也要分两次写。
页是绝对的,按整页大小排列,不是从开始写入的地址开始算。
读没有页的问题,可以从任意地址开始读取任意大小数据,只是超过整个存储器容量时地址才回卷。
但一次性访问的数据长度也不要太大。
所以分页的存储器要做好存储器管理,尽量同时读写的数据放在一个页上。
Eeprom的读写
所看过的对24系列I2C读写时序描述最准确最容易理解的资料,尤其是关于主从器件的应答描述和页写描述,看完后明白了很多。
关于页写的描述,网络上绝大部分范程都没提到页写时的数据地址必须是每页的首地址才能准确写入,而且如果写入超过一页的数据会循环覆盖当前页的数据。
关于IIC总线I2C总线:i2c总线是Philips 公司首先推出的一种两线制串行传输总线。
它由一根数据线(SDA)和一根时钟线(SDL)组成。
i2c总线的数据传输过程如图3所示,基本过程为:1、主机发出开始信号。
2、主机接着送出1字节的从机地址信息,其中最低位为读写控制码(1为读、0为写),高7位为从机器件地址代码。
3、从机发出认可信号。
4、主机开始发送信息,每发完一字节后,从机发出认可信号给主机。
5、主机发出停止信号。
I2C总线上各信号的具体说明:开始信号:在时钟线(SCL)为高电平其间,数据线(SDA)由高变低,将产生一个开始信号。
停止信号:在时钟线(SCL)为高电平其间,数据线(SDA)由低变高,将产生一个停止信号。
应答信号:既认可信号,主机写从机时每写完一字节,如果正确从机将在下一个时钟周期将数据线(SDA)拉低,以告诉主机操作有效。
在主机读从机时正确读完一字节后,主机在下一个时钟周期同样也要将数据线(SDA)拉低,发出认可信号,告诉从机所发数据已经收妥。
(注:读从机时主机在最后1字节数据接收完以后不发应答,直接发停止信号)。
注意:在I2C通信过程中,所有的数据改变都必须在时钟线SCL为低电平时改变,在时钟线SCL为高电平时必须保持数据SDA信号的稳定,任何在时钟线为高电平时数据线上的电平改变都被认为是起始或停止信号。
作为一种非易失性存储器(NVM),24系列EEPROM使用的很普遍,一般作为数据量不太大的数据存储器。
下面总结一下其应用的一些要点。
从命名上看,24CXX中XX的单位是kbit,如24C08,其存储容量为8k bit,即1k Byte=1024 Byte。
eeprom读写程序详解
eeprom读写程序详解EEPROM(Electrically Erasable Programmable Read-Only Memory) 是一种可编程只读存储器,可以在电信号的作用下进行擦写和改写。
它通常用于存储单片机或其他嵌入式系统中的数据、设置参数、配置文件等。
对于 EEPROM 的读写程序,需要考虑以下几个方面:1. 读操作:读操作通常包括以下步骤:- 等待上次读操作完成。
- 获取要读取的数据的单元地址。
- 将 EEPGD 位和 CFGS 位清零。
- 启动读操作控制位 RD。
- 等待本次读操作完成。
- 将该单元地址中对应的数据返回。
在读取 EEPROM 数据时,为了避免芯片在一瞬间无法获取到数据,需要给芯片一定的时间来稳定获取数据。
因此,在读取操作中需要加入等待步骤。
2. 写操作:写操作通常包括以下步骤:- 等待上次写操作完成。
- 获取要写的数据的单元地址。
- 将要写的数据写入 EEPROM 的单元中。
- 将 EEPGD 位和 CFGS 位清零。
- 启动写操作控制位 WP。
- 等待写操作完成。
在写操作中,为了确保数据的可靠性,需要将要写的数据写入EEPROM 的单元中,并等待写操作完成。
同时,在写操作过程中,需要注意避免对无关的单元进行写操作,以免损坏 EEPROM 芯片。
3. 中断处理:在 EEPROM 的读写操作中,通常需要加入中断处理机制,以便在读写过程中及时响应和处理异常情况。
例如,在读取 EEPROM 数据时,如果 EEPROM 芯片出现故障,可能会导致读取失败。
为了避免这种情况,可以在读取操作中加入中断处理机制,在读取失败时及时报警或采取相应的应对措施。
总之,EEPROM 读写程序的实现需要考虑多个方面的因素,包括读操作、写操作、中断处理等。
同时,需要考虑 EEPROM 芯片的特性和限制,以便实现高效、稳定、可靠的 EEPROM 读写操作。
eeprom的读写原理
eeprom的读写原理
EEPROM是可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory)的缩写。
它是一种非易失性存储器,可以在不需要电源的情况下保持存储的数据。
EEPROM的读写原理涉及到内部的电子结构和操作方式。
首先,让我们从写入数据开始。
EEPROM的写入原理是通过在内部的存储单元中存储电荷来表示数据。
当需要写入数据时,首先要将写入地址和数据发送到EEPROM芯片。
然后,根据写入数据的逻辑状态(0或1),相应的存储单元内的电荷状态会被改变。
这是通过在存储单元中施加特定的电压来实现的,这会改变存储单元内部的绝缘体的电荷状态,从而表示特定的数据。
接下来是读取数据的原理。
当需要读取数据时,读取地址会被发送到EEPROM芯片,芯片会根据地址找到相应的存储单元,并读取存储单元内的电荷状态。
这些电荷状态会被转换成数字信号,然后输出给外部系统。
通过这种方式,存储在EEPROM中的数据可以被读取出来并用于系统操作。
总的来说,EEPROM的读写原理涉及到内部存储单元的电荷状态
表示数据,并通过外部电压和信号的控制来实现数据的写入和读取操作。
这种原理使得EEPROM成为一种非常有用的存储器,适用于许多需要长期存储数据并且需要在断电后保持数据的应用场景。
eprom和eeprom的读写过程
eprom和eeprom的读写过程
EPROM(Erasable Programmable Read-Only Memory)和EEPROM(Electrically Erasable Programmable Read-Only Memory)都是一种非易失性存储器,可以用来存储数据并在需要时进行读取。
两者之间的主要区别在于擦除的方式不同。
1. EPROM的读写过程:
- 写入:EPROM使用特定的设备(EPROM编程器)将数据写入芯片。
设备通过一个特定的电压脉冲将数据编程到存储单元中,并将存储单元的电平状态改变从1变为0,以此来表示数据的存储。
- 读取:EPROM的读取是通过将特定地址的存储单元的电平状态转换为电压信号来完成的。
如果存储单元的电平为1,则读取的电压为低电平;如果存储单元的电平为0,则读取的电压为高电平。
2. EEPROM的读写过程:
- 写入:EEPROM的写入过程与EPROM相比更灵活。
可以通过特定的设备将数据写入EEPROM。
写入时,需要将要写入的地址和写入的数据发送给EEPROM,并将特定的命令信号发送给EEPROM,以启动写入操作。
写入操作完成后,EEPROM中相应地址的存储单元将保存写入的数据。
- 读取:EEPROM的读取过程与EPROM相似,通过将特定地址的存储单元的电平状态转换为电压信号来读取数据。
EEPROM的读取可以直接通过数据总线传输读取命令和地址,不需要额外的编程器。
需要注意的是,在实际操作中使用EPROM和EEPROM时,需要严格按照相关规范和设备说明进行操作,确保正确的读写过程,以免损坏芯片或丢失数据。
STC单片机EEPROM读写程序
STC单片机EEPROM读写程序在单片机中,EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,可以用于存储数据,即使在断电情况下,数据也会被保留。
因此,掌握STC单片机的EEPROM读写程序对于开发嵌入式系统非常重要。
一、EEPROM简介EEPROM是一种可重复擦写的存储器,可用于存储小量数据。
与Flash存储器相比,EEPROM具有更快的写入和擦除速度。
在STC单片机中,EEPROM的存储容量通常较小,一般在几个字节到几千字节之间。
二、EEPROM读操作在STC单片机中,进行EEPROM读操作需要按照以下步骤进行:1. 初始化I2C总线:STC单片机使用I2C总线进行EEPROM读写操作,因此需要先初始化I2C总线。
通过设置相关寄存器,设置I2C 总线的速度和地址。
2. 发送设备地址:确定要读取的EEPROM设备的地址,并发送到I2C总线。
3. 发送寄存器地址:确定要读取的EEPROM寄存器地址,并将其发送到I2C总线。
4. 发送读命令:向EEPROM发送读命令,以启动读操作。
5. 读取数据:从EEPROM中读取数据,并保存到变量中。
6. 结束读操作:完成读操作后,关闭I2C总线。
三、EEPROM写操作类似于读操作,进行EEPROM写操作也需要按照一定的步骤进行:1. 初始化I2C总线:同样地,首先需要初始化I2C总线。
2. 发送设备地址:确定要写入的EEPROM设备的地址,并发送到I2C总线。
3. 发送寄存器地址:确定要写入的EEPROM寄存器地址,并将其发送到I2C总线。
4. 发送写命令:向EEPROM发送写命令,以启动写操作。
5. 写入数据:将要写入EEPROM的数据发送到I2C总线。
6. 结束写操作:完成写操作后,关闭I2C总线。
四、注意事项在进行EEPROM读写操作时,需要注意以下几点:1. 确保正确的设备地址:要与EEPROM的地址匹配,否则无法进行有效的读写操作。
STM8教程实验26-片内EEPROM的读写
例程二十六Flash_eeprom读写实验EEPROM是单片机应用系统中经常会用到的存储器,它主要用来保存一些掉电后需要保持不变的数据。
在以前的单片机系统中,通常都是在单片机外面再扩充一个EEPROM芯片,这种方法除了增加成本外,也降低了可靠性。
现在,很多单片机的公司都推出了集成有小容量EEPROM的单片机,这样就方便了使用,降低了成本,提高了可靠性。
STM8单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。
最为特色的是,在STM8单片机中,对EEPROM的访问就象常规的RAM一样,非常方便。
EEP ROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。
下面介绍一下STM8S了EEPROM:风驰电子STM8开发板就是大容量的了解了那么多关于STM8S 的EEPROM的知识,下面看看软件方面是如何编程的,老规矩,从主函数看起。
看到主函数,是否觉得很容易呢,在这个例程中我发了一个晚上的时间去调试,还是不行,到了第二天早上才调试成功,所以希望大家珍惜我的写的教程文档,这些教程和例程是我发了不知多少时间是总结,为了都是各位爱好者能缩短一下开发使用时间。
好了,转入正题吧,大家在做这个实验的时候要注意2个重要的地方。
第一在“stm8s_conf.h”文件中取消注释,在“stm8s.h”的文档中改成如下这样才能使用几个重要的函数。
还有一个重要的地方是,Flash_eeprom_writeread_Init()初始化一定先初始化。
下面再看看初始化的原函数这个初始化是初始化Flash正常编程方式,开启EEPROM的数据存贮器。
这是一个EEPROM的读写测试程序,EEPROM的读的话是可以每个地址每个地址的读,但是写的话必须是一个扇区一个扇区的写,每个扇区为128Byte。
至于里面的各个函数,相信大家一个就知道是什么意思了,在这里就不多说了。
里面还有一个地方要注意的,FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);这条语句就是等待EEPROM写完成,必须的,无论EEPROM的读还是写,都必须要这条语句。
eeprom读写例子
void main(void)
{
UINT8 i=0;
EEPROMSectorErase(0); //从EEPROM 的相对0 地址扇区擦除
EEPROMWriteByte(0,0x88);//从EEPROM 的相对0 地址写入0x88
i=EEPROMReadByte(0); //从EERPOM 的相对0 地址读取数据
{
ISP_CMD=0x03; //扇区擦除模式
EEPROMEnable(); //EEPROM 使能
EEPROMSetAddress(addr);//设置EEPROM 地址
EEPROMStart(); //EEPROM 启动
DelayNms(10); //擦除一个扇区要10ms
EEPROMDisable(); //禁止EEPROM
{
ISP_DATA=0x00; //清空ISP_DATA
ISP_CMD=0x01; //读模式
EEPROMEnable(); //EEPROM 使能
EEPROMSetAddress(addr); //设置EEPROM 地址
EEPROMStart(); //EEPROM 启动
DelayNus(10); //读取一个字节要10us
STC89C52内部EEPROM
STC89C52RC 2KEEPROM
传统的 EEPROM是电可擦可编程只读存储一种掉电后数据不丢失的存储芯片。
?? STC89C52RC的 EEPROM是通过 ISP/IAP 技术读写内部 FLASH 来实现 EEPROM。
?? STC89C52RC的 EEPROM起始地址为 0x2000,以 512字节为一个扇区,EERPOM的大小为 2K字节。
学习笔记之内部eeprom读写
程序修改后重新编译下载到单片机后, 打开串口调试助手, 肯定会发现什么数据都没有, 别急, 重新按下单片机的复位键就可以看到数据了。 因为在主程序中发送数据的指令只执行 了一次, 速度很快, 在你打开串口调试助手前就已经过去了, 因此需复位一下才能看到现象。 现象如下图所示:
读回的数据分别是 00,01,02,03,04,05,06,07,08,09,发现和写入的数据是相同的,那么说 明成功的对 eeprom 进行了读写操作。 只要会了这两个最基本的读写操作,那么 Atmega16 内部的 512 字节的 eeprom 空间就 可以为你所用了。
AVR 学习笔记之内部 EEPROM 读写
AVR 单片机的多数型保存的数据。 Atmega16 内置的 EEPROM 的容量是 512 字节, 可以重复擦写的次数 是 10 万次。
AVRGCC 自带的 EEPROM 读写函数可对 Atmega16 内部的 EEPROM 进行读写操作。如果要使用 AVRGCC 中自带的 EEPROM 读写函数,首先要在程序中包含#include<avr/eeprom.h>这个头文件。 AVRGCC 内置 EEPROM 访问函数库如下: (1)void eeprom_read_block(void *buf, unsigned int addr, size_t n):从 EEPROM 的 addr 地址
} void usart_init() { UCSRA=0X00; UCSRC|=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//写 UCSRC, 异步操作, 禁止奇偶校验, 停止位数为 1,8 位字符长度 UBRRH=(F_CPU/BAUD/16-1)/256;//波特率高 4 位 UBRRL=(F_CPU/BAUD/16-1)%256;//波特率低 8 位 UCSRB|=(1<<TXEN);//使能发送,使能接收,使能接受中断 } void usart_put_char(unsigned char TX_data)//发送一个字节的数据 { while(!(UCSRA&(1<<UDRE)));//检测 UDRE 是否为 1, 只有在 UDRE 为 1 的情况下, 才 能向缓冲器 UDR 中写入数据。 UDR=TX_data; } int main() { unsigned char i; port_init(); usart_init(); for(i=0;i<10;i++)eeprom_write_byte(i,i); while(1); } 上段程序是对 EEPROM 进行写操作,通过 for(i=0;i<10;i++)eeprom_write_byte(i,i);这段 程序实现的是在地址 0—9 分别写数据 0—9。 那么怎么知道我数据是否成功写入了呢?下面 还要进行读操作,作用是把刚才写入的数据读出来,看看是否和写入的一样,只需要修改主 程序即可。修改后的代码如下: int main() { unsigned char i; port_init(); usart_init(); for(i=0;i<10;i++) usart_put_char(eeprom_read_byte(i)); while(1); }
PIC单片机EEPROM的读写程序
。TEEHSATAD 考参 �似类 MORPEE 写读与程过体具写读的 HSALF �3 。)个这考参要前序程编(TEEHSATAD 见可序程编汇体具 。零清被否是 RW�置设被否是 FIEE 查检须必件软则�成完有没 1 骤步果如。 �零清件软由须 必 FIEE�置设被 FIEE 而零清被位 RW�时束结期周写在 �01 。NERW 除清 。 �断中到用要需果如�断中放开 。位 RW 置设 �3� 。 �2NOCEE 入写后 然�W 入写先首�步两含包� 。2NOCEE 入写 AAX0 将 �2� 。 �2NOCEE 入写后 然�W 入写先首�步两含包� 。2NOCEE 入写 55X0 将 �1� �序顺的骤步个 5 面下行执格严 。断中 elbasiD 。NERW 置设 。位 DGPEE 清 .ATADEE 入写据数位 8 将 。制限的件硬于大会不度长址地保确�RDAEE 入写址地将 �7 �6 �5 �4 �3 �2 CIP
。程 过写于处正是不是看位 RW 查检�成完有没 01 骤步果如 �1
�骤步的 MORPEE 写 。行进在正作操写有没证保要前程过作操写个 一始开在。零清 NERW 对须必件软后完写。RW 置设能才后置设被 NERW 在有只 。零持保须必间时它其 �据数写在正了除位 NERW 据数 MORPEE 写 。TEEHSATAD 见可序程编汇体具 。数读 ATADEE 从 。位 DR 置设 。位 DGPEE 除清 。制限的件硬于大会不度长址地保确 �ATADEE 入写址地将 �4 �3 �2 �1 �3
的中 ATADEE:HTADEE 而�除擦被会将据数的中 RDAEE:HRDAEE 。 令 指 行 执 止 停 会 将 机 片 单 � 置 设 被 R W 和 N E RW 旦 一 �HSALF 于对 。1 置被 FIEE �零清被会将址地的 RDAEE 后然 �入写据 数的中 ATADEE 将会就 RW 和 NERW 了置设旦一�据数 MORPEE 于 对 。 零 清 位 识 标 该 对 先 首 须 必 前 之 RW 置 设 在 � 置 设 被 后 束 结 程过写当 FIEE 志标断中。零清动自被会后束结作操写�位始初作操 写是位 RW。作操写行进以可则 1=�位能使作操写是 NERW。FIEE 和 RRERW 位志标个两�NERW 和 RW 位制控个两有作操写 。据数到读器 存寄 ATADEE:HTADEE 从以可令指条两后置设被在 �据数的 HSALF 于 对 而 。 据 数 到 读 器 存 寄 ATADEE 从 以 可 上 马 会 就 后 置 设 被位 该 �作操读的 MORPEE 于对。零清动自会后束结作操读。据数到读器 存寄据数从能就 1 成置设被旦一�DR 位加附个一到用要作操读 。作操行进 HSALF 对是则 1= �作操行进 MORPEE 对 �0=DGPEE 。断中外意的中程过写止防来用被是而�器存 寄的上义意正真个一是不 2NOCEE�化始初置配来用 1NOCEE 器存寄 2NOCEE 和 1NOCEE �1 。写读的节字/字行进�行执常正的序程响影 会不 MORPEE 。 �列系 X78F61�据数位 41 储存 ATADEE:HTADEE � 址 地 位 31 存 保 RDAEE:HRDAEE � 断 中 和 令 指 条 一 下 行 执会才束结作操写到直�行运的令指停暂会作操写的 HSALF 对
EEPROM读写实验
实验十、EEPROM读写实验
(一)、实验目的:
EEPROM是掉电后不丢失信息的一种数据存储器,适用于现场数据的采集和存储。
本实验给出了EEPROM记录单片机重启次数(包括上电复位重启和下载程序的过程中的复位重启),并将该次数显示在8位4联LED数码管上的例程程序。
目的是引导使用者掌握51单片机与IIC设备进行串行通讯的原理和使用方法。
(二)、实验接线和步骤:
1、将U13(上面的8位拨码开关)的“5”~“8”位打到“ON”位置,这是数码
管位码。
2、将U14(下面的8位拨码开关)的“1”~“8”位打到“ON”位置,这是数码
管段码。
3、将24C08处的两个三位跳线处,分别短接“P34”,“PC-34”跳线和“P35”,“PC-35”
跳线。
这是24C08的IIC总线的数据线和时钟线。
4、下载程序。
5、因为U17(USB旁的4位拨码开关)会对数码管显示产生影响,所以将U17的
“1”~“3”位断开。
6、按动复位键观察数码管显示数字。
(电源重启和下载复位也会增加单片机重启次
数)
说明:因程序例程篇幅过长,不方便以书面形式列出,为方便使用者,例程的原代码及工程文件所有文档均已附在电子文档“EEPROM读写实验”文件夹中。
使用者可在例程程序的基础上改变某些参数以观察不同的实验效果。
