1、第8章 AT89S51单片机外部存储器扩展,8.1 系统扩展结构 AT89S51单片机采用总线结构,使扩展易于实现,AT89S51单片机系统扩展结构如图8-1所示。图8-1 AT89S51单片机的系统扩展结构,单片机系统寻址范围达到64KB。,图8-2 AT89C51单片机扩展片外三总线,控制信号线 (1) 作为外扩程序存储器读选通控制信号。 (2) 和 为外扩数据存储器和I/O读、写选通控制信号。 (3)ALE作为P0口发出低8位地址锁存控制信号。 (4) 为片内、片外程序存储器选择控制信号。,8.2 地址空间分配和外部地址锁存器8.2.1 存储器地址空间分配AT89S51单片机发出地址码用
2、于选择某个存储器单元,单片机必须进行两种选择:一是选中该存储器芯片,这称为“片选”。二是在“片选”基础上再根据单片机发出地址码来对“选中” 芯片某一单元进行访问,即“单元选择”。为实现片选,存储器芯片都有片选引脚。同时也都有多条地址线引脚,以便进行单元选择。注意,“片选”和“单元选择”都是单片机通过地址线一次发出地址信号来完成选择。通常把单片机系统地址线笼统地分为低位地址线和高位地址线,“片选”都是使用高位地址线。 常用存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法)。,6,1线选法直接利用系统某一高位地址线作为存储器芯片(或I/O接口芯片)“片选”控制信号。只
3、需要把用到高位地址线与存储器芯片的片选”端直接连接即可。线选法优点是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。缺点是可寻址芯片数目受到限制。另外,地址空间不连续,每个存储单元地址不唯一,这会给程序设计带来不便,只适用于外扩芯片数目不多单片机系统存储器扩展。 2译码法使用译码器对AT89S51单片机高位地址进行译码,译码输出为存储器芯片片选信号。有效利用存储器空间,适用于多芯片存储器扩展。常用有74LS138(3线-8线译码器)、74LS139(双2线-4线译码器)和74LS154(4线-16线译码器)。若全部高位地址线都参加译码,称为全译码;若仅部分高位地址线参加译码,称为部
4、分译码。部分译码存在着部分存储器地址空间相重叠情况。,(1)74LS138 3线-8线译码器,3个数据输入端,译码产生8种状态。当译码器输入为某一固定编码时,其输出仅有一个固定引脚输出为低电平,其余为高电平。输出低电平引脚就作为某一存储器芯片片选信号。,(2)74LS139 双2线-4线译码器。这两个译码器完全独立,分别有各自的、数据输入端、译码状态输出端以及数据输入允许端,其引脚如图8-4所示,真值表见表8-2(只给出其中一组)。图8-3 74LS138引脚图 图8-4 74LS139引脚图,9,例如,要扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片?由7
5、4LS138真值表可知,把G1接到+5V, 、 接地,P2.7、P2.6、P2.5(高3位地址线)分别接74LS138的C、B、A端,由于对高3位地址译码,这样译码器有8个输出 ,分别接到8片6264的各 “片选”端,实现8选1的片选。 低13位地址(P2.4P2.0,P0.7P0.0)完成对选中的6264芯片中的各个存储单元的“单元选择”。这样就把64KB存储器空间分成8个8KB空间了。,64KB地址空间分配如图8-5所示。图8-5 64KB地址空间划分成8个8KB空间 这里采用全地址译码方式。因此,AT89S51发出16位地址时,每次只能选中某一芯片及该芯片一个存储单元,如何用74LS13
6、8把64KB空间全部划分为4KB块呢?4KB空间需12条地址线,而译码器输入只有3条地址线(P2.6P2.4),P2.7没有参加译码,P2.7发出的0或1决定选择64KB存储器空间的前32KB还是后32KB,由于P2.7没有参加译码,就不是全译码方式,前后两个32KB空间就重叠了。那么,这32KB空间利用74LS138译码器可划分为8个4KB空间。 如果把P2.7通过一个非门与74LS138译码器G1端连接起来,如图8-6所示,就不会发生两个32KB空间重叠问题了。这时,选中是64KB空间的前32KB空间,地址范围为0000H7FFFH。如果去掉图8-6中的非门,地址范围为8000HFFFFH
7、。把译码器输出连到各个4KB存储器片选端,这样就把32KB空间划分为8个4KB空间。P2.3P2.0,P0.7P0.0实现“单元选择”,P2.6P2.4通过74LS138译码实现对各存储器芯片片选。,13,采用译码器划分的地址空间块都是相等的,如果将地址空间块划分为不等的块,可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码。图8-6 存储器空间被划分成每块4KB,8.2.2 外部地址锁存器 常用地址锁存器芯片有74LS373、74LS573等。 1锁存器74LS373 带三态门8D锁存器图8-7 锁存器74LS373引脚 图8-8 74LS373内部结构,图8-9 AT89S51
8、单片机P0口与74LS373连接,D7D0:8位数据输入线, Q7Q0:8位数据输出线。 G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。,图8-10 锁存器74LS573引脚,2锁存器74LS573 是一种带有三态门8D锁存器,功能及内部结构与74LS373完全一样,只是其引脚排列与74LS373不同,图8-10为74LS573引脚图。 由图8-10,与74LS373相比,74LS573的输入D端和输
9、出Q端依次排列在芯片两侧,为绘制印制电路板提供方便。 D7D0:8位数据输入线。 Q7Q0:8位数据输出线。 G :数据输入锁存选通信号,该引脚与74LS373的G端功能相同。:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。,18,8.3 程序存储器EPROM扩展 根据编程方式不同,分为以下几种。 (1)掩模ROM。在制造过程中编程,是以掩模工艺实现的,因此称为掩模ROM。这种芯片存储结构简单,集成度高,但由于掩模工艺成本较高,因此只适合于大批量生产。 (2)可编程ROM(PROM)。芯片出厂时没有任何程序信息,
10、独立编程写入。PROM只能写一次,写入内容后,就不能再修改。 (3)EPROM。紫外线擦除,用电信号编程。在芯片外壳的中间位置有一个圆形窗口,对该窗口照射紫外线就可擦除原有信息。使用编程器可将调试完毕程序写入。 (4)E2PROM(EEPROM)。一种用电信号编程,也用电信号擦除的ROM芯片。对E2PROM的读写操作与RAM存储器几乎没有什么差别,只是写入速度慢一些,但断电后仍能保存信息。,(5)Flash ROM。 又称闪速存储器(简称闪存),是在EPROM、E2PROM基础上发展起来的一种电擦除型只读存储器。特点是可快速在线修改其存储单元中的数据,改写次数可达1万次,其读写速度很快,存取时
11、间可达70ns,而成本比E2PROM低得多,大有取代E2PROM趋势。,8.3.1 常用EPROM芯片 EPROM典型芯片是27系列产品,例如,2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。 例如,“27128”中的“27”后的数字 “128”,128/8 =16KB 1常用EPROM芯片引脚 A0A15:地址线引脚。 D7D0:数据线引脚。:片选控制端。:输出允许控制端。:编程时,编程脉冲输入端。 VPP:编程时,编程电压(+12V或+25V)输入端。 VCC:+5V,芯片的工作电压。 GND :数字地。 NC:无用端。,21,图8-11 常用E
12、PROM芯片引脚,表8-4为27系列EPROM芯片的技术参数,其中VCC是芯片供电电压,VPP是编程电压,Im为最大静态电流,Is为维持电流,TRM为最大读出时间。,2EPROM芯片工作方式 5种工作方式,由 、 、 信号组合确定。 (1)读出方式。工作在该方式的条件是使片选控制线为低电平,同时让输出允许控制线 为低电平,VPP为+5V,就可把指定地址单元的内容从D7D0上读出。 (2)未选中方式。当片选控制线 为高电平时,芯片未选中方式,数据输出为高阻抗悬浮状态,不占用数据总线。EPROM处于低功耗的维持状态。,(3)编程方式。在VPP端加上规定好的高压, 和 端加上合适的电平(不同芯片要求
13、不同),能将数据写入到指定地址单元。编程地址和编程数据分别由系统的A15A0和D7D0提供。 (4)编程校验方式。VPP端保持相应的编程电压(高压),再按读出方式操作,读出固化好的内容,校验写入内容是否正确。 (5)编程禁止方式。,25,8.3.2 程序存储器操作时序 1访问程序存储器控制信号 (1)ALE:用于低8位地址锁存控制。 (2) :片外程序存储器“读选通”控制信号。它接外扩EPROM的 引脚。 (3) :片内、片外程序存储器访问控制信号。当 =1时,在单片机发出的地址小于片内程序存储器最大地址时,访问片内程序存储器;当 =0时,只访问片外程序存储器。 如果指令是从片外EPROM中读
14、取的,除了ALE用于低8位地址锁存信号之外,控制信号还有 , 接外扩EPROM的 脚。此外,P0口分时用作低8位地址总线和数据总线,P2口用作高8位地址线。,2操作时序 AT89S51对片外ROM操作时序分两种,即执行非MOVX指令时序和执行MOVX指令的时序,如图8-12所示。,(1)应用系统中无片外RAM 系统无片外RAM(或I/O)时,不用执行MOVX指令。 在执行非MOVX指令时,时序如图8-12(a)所示。 P0口作为地址/数据复用的双向总线,用于输入指令或输出程序存储器的低8位地址PCL。 P2口专门用于输出程序存储器的高8位地址PCH。P0口分时复用,故首先要将P0口输出的低8位
15、地址PCL锁存在锁存器中,然后P0口再作为数据口。在每个机器周期中,允许地址锁存两次有效,ALE在下降沿时,将P0口的低8位地址PCL锁存在锁存器中。 同时, 也是每个机器周期中两次有效,用于选通片外程序存储器,将指令读入片内。 系统无片外RAM(或I/O)时,此ALE信号以振荡器频率的1/6出现在引脚上,它可用作外部时钟或定时脉冲信号。,(2)应用系统中接有片外RAM 执行访问片外RAM(或I/O)MOVX指令,16位地址应转而指向数据存储器,时序如图8-12(b)。 在指令输入以前,P2口输出的地址PCH、PCL指向程序存储器;在指令输入并判定是MOVX指令后, ALE在该机器周期S5状态
16、锁存P0口发出片外RAM(或I/O)低8位地址。,若执行是“MOVX A,DPTR”或 “MOVX DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。,30,8.3.3 AT89S51单片机与EPROM接口电路设计由于AT89S5x单片机片内集成不同容量的Flash ROM,可根据实际需要来决定是否外部扩展EPROM。当应用程序不大于单片机片内的Flash ROM容量时,扩展外部程序存储器的工作可省略。 1AT89S51与单片EPROM硬件接口电路在设计接口电路时,由于外扩EPROM在正常使用中只读不写,故EPROM芯片只有读出控制引
17、脚,记为 ,该引脚与AT89S51单片机 相连,地址线、数据线分别与AT89S51单片机地址线、数据线相连,片选端控制可采用线选法或译码法。,31,图8-13 AT89S51单片机与27128接口电路,2使用多片EPROM扩展电路 图8-14所示为利用4片27128 EPROM扩展成64KB程序存储器方法。片选信号由译码器产生。4片27128各自所占地址空间,读者自己分析。,图8-14 AT89S51与4片27128 EPROM接口电路,8.4 静态数据存储器RAM扩展在单片机应用系统中,外部扩展数据存储器都采用静态数据存储器(SRAM)。对外部扩展数据存储器空间访问,P2口提供高8位地址,P
18、0口分时提供低8位地址和8位双向数据总线。片外数据存储器RAM的读和写由AT89S51的 (P3.7)和 (P3.6)信号控制。而片外程序存储器EPROM输出端允许( )由单片机读选通 信号控制。尽管与EPROM地址空间范围相同,但由于控制信号不同,不会发生总线冲突。,单片机系统中常用RAM芯片典型型号有6116(2KB ),6264(8KB),62128(16KB),62256(32KB)。6116为24脚封装,6264、62128、62256为28脚封装。这些RAM芯片引脚如图8-15所示。,图8-15 常用RAM引脚图,8.4.1 常用静态RAM(SRAM)芯片,A0A14:地址输入线。
19、 D0D7:双向三态数据线。:片选信号输入线。对6264芯片,当24脚(CS)为高电平且 为低电平时才选中该片。:读选通信号输入线,低电平有效。:写允许信号输入线,低电平有效。 VCC 工作电源+5V。 GND 地。RAM存储器有读出、写入、维持3种工作方式。,36,8.4.2 外扩数据存储器读写操作时序 1读片外RAM操作时序若外扩一片RAM,将 脚与RAM的 脚连接, 脚与芯片 脚连接。在S1状态,ALE信号由低变高(处),读RAM周期开始。在S2状态,CPU把低8位地址送到P0口总线上,把高8位地址送上P2口(在执行“MOVX A,DPTR”指令阶段才送高8位;若执行“MOVX A,Ri
20、”则不送高8位)。ALE下降沿(处)用来把低8位地址锁存到外部锁存器74LS373内。而高8位地址信息一直锁存在P2口锁存器中(处)。 在S3状态,P0口总线变成高阻悬浮状态。在S4状态,执行指令“MOVX A,DPTR”后使 信号变有效(处), 信号使被寻址片外RAM过片刻后把数据送上P0口总线(处),当 回到高电平后(处),P0总线变悬浮状态(处)。,图8-16 AT89S51单片机读片外RAM操作时序图,38,2写片外RAM操作时序向片外RAM写数据,单片机执行“MOVX DPTR,A”指令。指令执行后,AT89S51的 信号为低有效,此信号使RAM的 端被选通。开始过程与读过程类似,但
21、写过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(处)。此间,P0总线上不会出现高阻悬浮现象。在S4状态,写信号 有效(处),选通片外RAM,稍过片刻,P0口上数据就写到RAM内了,然后写信号 变为无效(处)。,图8-17 AT89S51单片机写片外RAM操作时序图,8.4.3 AT89S51单片机与RAM接口电路设计 AT89S51对片外RAM读和写由AT89S51单片机 (P3.7)和 (P3.6)控制,片选端由译码器译码输出控制。图中数据存储器选用6264,该芯片地址线A0A12,故AT89S51剩余地址线为3条。
22、 用线选可扩展3片6264,对应存储器空间见表8-7。用译码法扩展外部数据存储器的接口电路如图8-19所示。数据存储器62128,芯片地址线为A0A13,剩余地址线为两条,若采用2线-4线译码器可扩展4片62128。各片62128芯片地址分配如表8-8所示。,图8-18 线选法扩展外部数据存储器电路,图8-19 译码法扩展外部数据存储器电路图,【例8-1】编程将片外数据存储器5000H50FFH单元全部清“0”。 方法1 : 用DPTR作为数据区地址指针,同时使用字节计数器。 MOV DPTR,#5000H ;设置数据块指针初值MOV R7,#00H ;设置块长度计数器初值(00H是 ;循环2
23、56次)CLR A LOOP:MOVX DPTR,A ;给一单元送“00H”INC DPTR ;地址指针加1DJNZ R7,LOOP ;数据块长度减1, 若不为0则跳;LOOP继续清“0” HERE:SJMP HERE ;执行完毕, 原地踏步,方法2 : 用DPTR作为数据区地址指针,但不使用字节计数器,而是比较特征地址。参考程序如下:MOV DPTR,#5000H ;设置数据块指针初值CLR A ;A清0 LOOP: MOVX DPTR,A ;给一单元送“00H”INC DPTR ;数据块地址指针加1MOV R7,DPL ;数据块末地址加1送R7CJNE R7,#0,LOOP ;与末地址+1
24、比较 HERE: SJMP HERE,8.5 EPROM和RAM综合扩展 8.5.1 综合扩展硬件接口电路 【例8-2】采用线选法扩展2片8KB的RAM和2片8KB的EPROM。RAM芯片选用2片6264。扩展2片EPROM芯片,选用2764。 (1)控制信号及片选信号 P2.5接到IC1(2764)和IC3(6264)片选 端,P2.6接到IC2(2764)和IC4(6264)片选 端。 当P2.6=0,P2.5=1时,IC2和IC4片选有效,IC1和IC3无效。 当P2.6=1,P2.5=0时,IC1和IC3片选有效,IC2和IC4无效。 当 为低电平时,到片外程序存储区EPROM中读程序
25、;当读/写信号 或 为低电平时,对片外RAM读数据或写数据 、 、 3个信号是在执行指令时产生的,任意时刻只能执行一条指令,只能有一个信号有效,不可能同时有效,所以不会发生数据冲突。,图8-20 采用线选法综合扩展电路图,47,(2)各芯片地址空间分配 如果P2.6=0、P2.5=1,选中IC2、IC4。地址线A15A0与P2、P0对应关系如下:除P2.6、P2.5固定外,其他“”位均可变。设无用位P2.7 = 1,当“”各位全为“0”时,则为最小地址A000H;当“”均为“1”时,则为最大地址BFFFH。IC2、IC4地址空间A000HBFFFH共8KB。同理IC1、IC3地址范围C000H
26、DFFFH。4片存储器各自所占地址 空间如表8-9所示。 即使地址 空间重叠,也不会发生数据 冲突。IC1与IC3也同样如此。,【例8-3】采用译码法扩展2片8KB EPROM和2片8KB RAM。EPROM选用2764,RAM选用6264。 由表8-2 74LS139的真值表可见,当 =0、A=0、B=0时,输出端只有 为“0”, 全为“1”,选中IC1。这样,P2.7、P2.6、P2.5全为0,P2.4P2.0与P0.7P0.0这13条地址线的任意状态都能选中IC1的某一单元。当13条地址线全为“0”时,为最小地址0000H;当13条地址线全为“1”时,为最大地址1FFFH。 所以IC1的
27、地址范围为 0000H1FFFH。同理 可确定电路中各个 存储器地址范围见表8-10。,图8-21 采用译码法综合扩展电路图,8.5.2 外扩存储器电路工作原理及软件设计 1单片机片外程序区读指令过程单片机复位后,CPU从0000H地址开始取指令,执行程序。 取指令期间,低8位地址送P0口,经锁存器A0A7输出。高8位地址送往P2口,直接由P2.0P2.4锁存到A8A12地址线上,P2.5P2.7输入给74LS139进行译码输出片选。根据P2口、P0口状态则选中第一个程序存储器芯片IC1(2764)第一个单元地址0000H。然后当PSEN*变为低时,把0000H中指令代码经P0口读入内部RAM
28、中进行译码,从而决定进行何种操作。取出一个指令字节后PC自动加1,然后取第二个字节,依次类推。当PC=1FFFH时,从IC1最后一个单元取指令,然后PC = 2000H,CPU向P2口、P0口送出2000H地址时,则选中第二个程序存储器IC2,IC2地址范围2000H3FFFH,读指令过程同IC1,不再赘述。,2单片机片外数据区读/写数据过程 例如,把片外6000H单元数据送到片内RAM 50H单元中。MOV DPTR,#6000HMOVX A,DPTRMOV 50H,A例如,把片内50H单元数据送到片外4000H单元中。MOV A,50HMOV DPTR,#4000HMOVX DPTR,A
29、指令“MOVX A,Ri”和“MOVX Ri,A”。这时P0口装入Ri中内容(低8位地址),而把P2口原有的内容作为高8位地址输出。例8-4是采用“MOVX Ri,A”指令例子。,【例8-4】将程序存储器中以TAB为首址32个单元内容依次传送到外部RAM以4000H为首址区域。DPTR指向标号TAB首地址。R0既指示外部RAM地址,又表示数据标号TAB位移量。MOV P2,#40H ;MOV DPTR,#TAB ;要传送数据首地址#TAB送入DPTRMOV R0,#0 ;R0的初始值为0 AGIN:MOV A,R0MOVC A,A+DPTR ;把以TAB为首址32个单元内容送入A MOVX R
30、0,A ;程序存储器中表内容送入外部RAMINC R0 ;循环次数加1,外部RAM地址指针加1CJNE R0,#32,AGIN ;判32个单元的数据是否已经传送HERE:SJMP HERE ;原地跳转,TAB: DB , ;外部程序存储器中要传送的;32个单元的内容,8.6 E2PROM扩展在应用中,某些状态参数,不仅要求能够在线修改,而且断电后能保持,以备上电后恢复系统的状态。可选用具有断电保护功能RAM和E2PROM。 断电保护功能RAM容量大、速度快,但占用口线多,成本高。 E2PROM突出优点是能够在线擦除和改写,无须像用紫外线照射才能擦除,不存在在日光下信息缓慢丢失问题。 E2PRO
31、M在写入时能自动完成擦除,且不再需要专用编程电源,可直接使用单片机系统+5V电源。此外, E2PROM使单片机系统设计,特别是调试实验更为方便、灵活。在调试程序时,用E2PROM代替仿真EPROM,既可方便地修改程序,又能保存调试好程序。,54,与RAM芯片相比, E2PROM写入速度比较慢,写入一个字节需要ms量级时间。E2PROM适合于数据交换量较少,对传送速度要求不高场合。另外,它的擦除/写入是有寿命限制的,虽有1万次之多,但也不宜用在数据频繁更新场合。因此,应注意平均使用各单元,不然有些单元可能会提前结束寿命。与单片机连接,有并行和串行之分。并行的速度比串行快,容量大。并行E2PROM
32、 2864的容量为8k8位,有时需要与单片机接口连线少,这时可选用串行I2C接口E2PROM 。目前比较流行是24系列E2PROM ,主要由ATMEL、MICROCHIP等几家公司提供。典型芯片有AT24C02,AT24C08,AT24C16。串行I2C接口扩展将在第12章中介绍。,图8-22 常见并行E2PROM引脚图,8.6.1 并行E2PROM芯片常见并行芯片2816/2816A,2817/2817A,2864A等其主要性能见表8-11 。在引脚设计上,2KB的E2PROM 2816与相同容量EPROM 2716和静态RAM 6116兼容,8KB的E2PROM 2864A与同容量EPRO
33、M 2764和静态RAM 6264兼容。2816、2817和2864A的读出数据时间均为250ns,写入时间10ms。,8.6.2 E2PROM工作方式下面对E2PROM 2864A的4种工作方式作以说明。 1维持方式当 为高电平时,2864A进入低耗维持方式。此时,输出线呈高阻态,芯片的电流从140mA降至维持电流60mA。 2读方式当 和 均为低而 为高时,内部数据缓冲器被打开,数据送上总线,此时可进行读操作。 3写方式 2864A提供两种数据写入方式:页写入和字节写入。 (1)页写入 为提高写速度,2864A片内设置16字节“页缓冲器”,将整个存储器阵列划分成512页,每页16字节。高9
34、位(A12A4) 确定页,低4位(A3A0) 选择页缓冲器中的16个地址单元之一。 写操作分两步来实现:,第一步,在软件控制下把数据写入页缓冲器,这步称为页装载,与一般静态RAM写操作是一样的。 第二步,在最后一个字节(即第16个字节)写入到页缓冲器后20ns自动开始,把页缓冲器内容写到E2PROM阵列中对应地址单元中,这一步称为页存储。写方式时, 为低,在 下降沿,地址码A12A0被片内锁存器锁存,在 上升沿数据被锁存。片内有一个字节装载限时定时器,只要时间未到,数据可随机地写入页缓冲器。在连续向页缓冲器写数据过程中,不用担心限时定时器会溢出,因为每当 下降沿时,限时定时器自动被复位并重新启
35、动计时。限时定时器要求写 一个字节数据时间TBLW须满足:3sTBLW20s,这是正确对2864A页面写操作的关键。当一页装载完毕,不再有 信号时,限时定时器将溢出,页存储操作随即自动开始。首先把选中页内容擦除,然后写入数据由页缓冲器传递到E2PROM阵列中。,(2)字节写入与页写入类似,写入一个字节,限时定时器就溢出。 4. 数据查询方式 用软件来检测写操作中页存储周期是否完成。在页存储期间,如对2864A执行读操作,那么读出的是最后写入的字节,若芯片的转储工作未完成,则读出数据的最高位是原来写入字节最高位的反码。据此,单片机可判断芯片的编程是否结束。如果读出的数据与写入的数据相同,表示芯片
36、已完成编程,可继续向2864A装载下一页数据。上面介绍E2PROM都是针对Intel公司的产品,其它公司的产品不一定相同。,8.6.3 AT89S51扩展E2PROM AT2864设计 2864A片选端 与P2.7连接,8K字节存储器可作为数据存储器用,但掉电后数据不丢失。 AT89S51对2864A进行写操作时所用指令包括:MOVX DPTR,AMOVX Ri,A AT89S51对2864A进行读操作时所用指令包括:MOVX A,DPTRMOVX A,Ri 对2864A装载一个页面数据(16个字节)子程序WR2编写。被写入数据取自源数据区,子程序入口参数为:R1=写入2864A字节数(16B
37、)R0=2864A低位地址P2=2864A高位地址DPTR=源数据区首地址,图8-23 2864A与AT89S51单片机接口电路,WR2: MOVX A,DPTR ;取写入数据MOV R2,A ;数据暂存R2,备查询MOVX R0,A ;写入2864AINC DPTR ;源地址指针加1INC R0 ;目的地址指针加1CJNE R0,#00H,NEXT ;低位地址指针未满跳NEXT处INC P2 ;否则高位指针加1 NEXT:DJNZ R1,WR2 ;页面未装载完转移DEC R0 ;页装载完,恢复最后写入数据地址 LOOP: MOVX A,R0 ;读2864AXRL A, R2 ;与写入的最后一
38、个数据相异或JB ACC.7,LOOP ;最高位不等,再查RET ;最高位相同,一页写完上述写入程序中,完成页面装载循环部分共8条指令,当采用12MHz晶振时,进行时间约为13s,完全符合2864A的TBLW宽度要求。,8.7 片内Flash存储器编程 AT89S51片内4K字节Flash存储器的基本性能如下: (1)可循环写入/擦除1 000次。 (2)存储器数据保存时间为10年。 (3)程序存储器具有3级加密保护。 AT89S51出厂时,Flash存储器处于全部空白状态(各单元均为FFH),可直接进行编程。若不全为空白状态(即单元中有不是FFH的),应首先将芯片擦除后,方可写入程序。AT8
39、9S51片内Flash存储器有3个可编程的加密位,定义了3个加密级别,只要对3个加密位:LB1、LB2、LB3进行编程即可实现3个不同级别的加密。3个加密位的状态可以是编程(P)或不编程(U),3个加密位的状态所提供的3个级别的加密功能见表8-12。对3个加密位的编程可参照表8-13所列控制信号来进行,也可按照所购买的编程器菜单,选择加密功能选项(如果有的话)即可。,64,经过上述加密处理,使解密难度加大,但还可解密。现在有一种非恢复性加密(OTP加密)方法,就是将AT89S51第31脚( 脚)烧断或某些数据线烧断,经过上述处理的芯片仍正常工作,但不再具有读取、擦除、重复烧写等功能。是一种较强
40、的加密手段。国内某些厂家编程器直接具有此功能。如何将调试好程序写入到片内的Flash存储器中?片内Flash存储器有低电压编程(VPP=5V)和高电压编程(VPP=12V)两类芯片。低电压编程可用于在线编程,高电压编程与一般常用EPROM编程器兼容。在AT89S51芯片的封装面上标有低电压编程还是高电压编程的编程电压标志。应用程序在PC机中与在线仿真器以及用户目标板一起调试通过后,PC机中调试完毕的程序代码文件(.Hex目标文件),必须写入到AT89S51片内的闪速存储器中。目前常用的编程方法主要有两种:一种是使用通用编程器编程,另一种是使用下载型编程器进行编程。,8.7.1 通用编程器编程下
41、载程序时,编程器只是将AT89S51看作一个待写入程序的外部程序存储器芯片。PC机中程序代码一般通过串行口或USB口与PC机连接,并有相应的服务程序。在编程器与PC机连接好以后,运行服务程序,在服务程序中先选择所要编程的单片机型号,再调入.Hex目标文件,编程器就将目标文件烧录到单片机片内的Flash存储器中。开发者只需在市场购买现成的编程器。RF-810编程器的性能特点如下: (1)可对100余厂家的1000多种常用器件进行编程与测试。 (2)采用40脚锁紧插座,与PC机并行口(打印机口)连机工作。 (3)可自行调整烧录电压的参数,具有芯片损坏、插反检测 功能,可有效地保护芯片。,(4)对各
42、种单片机内Flash存储器、EPROM、E2PROM、PLD进行编程。 RF-810编程器配备全中文的Windows环境下运行的驱动软件。对芯片的编程不需要人工干预,软件用户界面易学,使用方便。 RF-810编程器套件包括:RF-810编程器主机,并口电缆及匹配器插座以及AC/DC电源适配器。使用编程器前应先进行硬件安装和软件安装。硬件安装时,首先把编程器的电缆与PC机并行口连接好后,再接通PC机电源,打开编程器的电源开关,编程器主机上的电源灯亮。此时,再进行编程器软件安装。PC机电源接通后,进入Windows环境。编程器的软件安装与普通软件的安装方法相同。软件安装完毕后,自动在桌面上形成RF
43、-810编程器图标。 点击RF-810编程器的图标,进入主菜单。主菜单下有如下功能的快捷方式图标的命令可供选择。,(1)选择要编程芯片的厂家、类型、型号、容量等。 (2)编程的内容调入缓冲区,进行浏览、修改操作。 (3)检查器件是否处于空白状态。 (4)可按照擦除、编程、校验等操作顺序自动完成对器件的全部操作过程。 (5)把缓冲区的内容写入到芯片内并进行校验。 (6)把器件的内容读入到缓冲区。 (7)校对器件内容和缓冲区内容是否一致,并列出有差异的第一个单元的地址。 (8)逐单元比较器件内容和缓冲区内容有无差异,并将有差异的单元列表显示。 (9)将器件的内容在屏幕上显示。 具体使用,可详细阅读
44、所购买的编程器的使用说明书。,8.7.2 ISP编程 AT89S5x系列单片机支持ISP。是指在电路板上的被编程的空白器件可以直接写入程序代码,而不需要从电路板上取下器件,已编程的器件也可用ISP方式擦除或再编程。 ISP下载编程器可以自行制作,也可电子市场购买。 ISP下载编程器与单片机一端连接的端口通常采用ATMEL公司提供的接口标准,即10引脚的IDC端口。图8-24为IDC端口的实物图以及端口的定义。,图8-24 IDC端口的实物图以及端口的定义,采用ISP下载程序时,用户板上必须装有上述IDC端口,端口信号线必须与目标板上AT89S51的对应引脚连接。注意,图中的8脚P1.4( )端只对AT89LP系列单片机有效,对AT89S5x系列单片机无效,不用连接。常见市售的ISP下载型编程器为ISPro下载型编程器。用户将安装光盘插入光驱,运行安装程序SETUP.exe即可。安装后,在桌面上建立一个“ISPro.exe下载型编程器”图标,双击该图标,即可启动编程软件。 ISPro下载型编程器软件的使用与RF-810软件的使用方法基本相同,可参照编程器使用说明书进行操作。,