版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第8章AT89S51单片机外部
存储器的并行扩展12【内容概要】
当AT89S51单片机片内的数据存储器与程序存储器(Flash存储器)的容量不能满足需要的情况下,需要进行扩展。存储器的扩展分为并行扩展和串行扩展,本章只介绍并行扩展存储器的基本方法,此外介绍了片外存储器地址空间分配的的两种方法:线选法和译码法,以及外部地址锁存器的选择。对于片内Flash程序存储器重点介绍了程序的写入,而对片外数据存储器以及E2PROM的并行扩展进行了较为详细的阐述。
首先对系统并行扩展的基本结构作以介绍,38.1系统扩展结构AT89S51单片机采用总线结构,使扩展易于实现,AT89S51单片机系统扩展结构如图8-1所示。
3图8-1AT89S51单片机的系统扩展结构4由图8-1可看出,系统扩展主要包括存储器扩展和I/O接口部件扩展。AT89S51单片机的外部存储器扩展即包括程序存储器扩展又包括数据存储器扩展,但是现在多数的单片机片内都集成有一定数量的Flash存储器作为程序存储器,所以片外扩展程序存储器的工作也可以省去。AT89S51单片机采用程序存储器空间和数据存储器空间截然分开的哈佛结构。扩展后,系统形成了两个并行的外部存储器空间。由于系统扩展是以AT89S51单片机为核心,通过总线把AT89S51单片机与各扩展的部件连接起来。因此,要进行系统并行扩展首先要构造系统总线。45系统总线按功能通常分为3组,如图8-1所示。(1)地址总线(AddressBus,AB):地址总线用于传送单片机发出的选择存储单元和I/O接口芯片中的寄存器单元选择的地址信号。(2)数据总线(DataBus,DB):数据总线用于单片机与外部存储器之间或与I/O接口之间传送数据,数据总线是双向的。(3)控制总线(ControlBus,CB):控制总线是单片机发出的各种控制信号。下面讨论如何来构造系统的三总线。61.P0口作为低8位地址/数据总线AT89S51单片机受引脚数目的限制,P0口既用作低8位地址总线,又用作8位数据总线(分时复用),因此P0口外需要增加一个8位地址锁存器。单片机对外部扩展的存储器单元或I/O接口寄存器进行访问时,先发出低8位地址送至地址锁存器锁存,锁存器的输出作为系统的低8位地址(A7~A0)。随后,P0口又作为数据总线口(D7~D0),如图8-2所示。2.P2口作为高位地址线P2口的全部8位口线用作系统的高8位地址线,再加上地址锁存器提供的低8位地址,便形成了系统完整的16位地址总线(见图8-2),从而使系统的寻址范围达到64KB(64K=64×1024=65536=216)。677图8-2AT89C51单片机扩展的片外三总线83.控制信号线除地址线和数据线外,还要有系统的控制总线。这些信号有的就是单片机引脚的第一功能信号,有的则是P3口第二功能信号。包括:(1)PSEN*
作为外扩程序存储器的读选通控制信号。(2)RD*和WR*为外扩数据存储器和I/O的读、写选通控制信号。(3)ALE作为P0口发出的低8位地址锁存控制信号。(4)EA*为片内、片外程序存储器的选择控制信号。可见,AT89S51的4个并行I/O口,由于系统扩展的需要,真正作为数字I/O用,就剩下P1和P3的部分口线了。898.2地址空间分配和外部地址锁存器本节讨论如何进行存储器空间的地址分配,并介绍用于输出低8位地址的常用的地址锁存器。8.2.1存储器地址空间分配实际系统设计中,既需要扩展程序存储器,又需要扩展数据存储器,如何把片外的两个64KB地址空间分配给各个程序存储器、数据存储器芯片,使一个存储单元只对应一个地址,避免单片机发出一个地址时,同时访问两个单元,发生数据冲突。这就是存储器地址空间分配问题。910AT89S51单片机发出的地址码用于选择某个存储器单元,外扩多片存储器芯片中,单片机必须进行两种选择:一是选中该存储器芯片,这称为“片选”,未被选中的芯片不能被访问。二是在“片选”的基础上再根据单片机发出的地址码来对“选中”芯片的某一单元进行访问,即“单元选择”。为实现片选,存储器芯片都有片选引脚。同时也都有多条地址线引脚,以便进行单元选择。注意,“片选”和“单元选择”都是单片机通过地址线一次发出的地址信号来完成选择。通常把单片机系统的地址线笼统地分为低位地址线和高位地址线,1011“片选”都是使用高位地址线。实际上,16条地址线中的高、低位地址线的数目并不是固定的,只是习惯上把用于“单元选择”的地址线,都称为低位地址线,其余的为高位地址线。常用的存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法),下面介绍。1.线选法是直接利用系统的某一高位地址线作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只需要把用到的高位地址线与存储器芯片的“片选”端直接连接即可。12线选法优点是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。缺点是可寻址的芯片数目受到限制。另外,地址空间不连续,每个存储单元的地址不唯一,这会给程序设计带来不便,只适用于外扩芯片数目不多的单片机系统的存储器扩展。2.译码法译码法就是使用译码器对AT89S51单片机的高位地址进行译码,译码输出作为存储器芯片的片选信号。这种方法能够有效地利用存储器空间,适用于多芯片的存储器扩展。常用的译码器芯片有74LS138(3线-8线译码器)、74LS139(双2线-4线译码器)和74LS154(4线-16线译码器)。1213若全部高位地址线都参加译码,称为全译码;若仅部分高位地址线参加译码,称为部分译码。部分译码存在着部分存储器地址空间相重叠的情况。下面介绍常用的译码器芯片。(1)74LS1383线-8线译码器,有3个数据输入端,经译码产生8种状态。引脚如图8-3所示,真值表见表8-1。由表8-1可见,当译码器的输入为某一固定编码时,其输出仅有一个固定的引脚输出为低电平,其余的为高电平。输出为低电平的引脚就作为某一存储器芯片的片选信号。1314
图8-374LS138引脚图
151516(2)74LS139双2线-4线译码器。这两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端,其引脚如图8-4所示,真值表见表8-2(只给出其中一组)。16图8-474LS139引脚图1718
以74LS138为例,如何进行地址分配。例如,要扩8片8KB的RAM6264,如何通过74LS138把64KB空间分配给各个芯片?由74LS138真值表可知,把G1接到+5V,G2A*、G2B*
接地,P2.7、P2.6、P2.5(高3位地址线)分别接74LS138的C、B、A端,由于对高3位地址译码,这样译码器有8个输出Y7*
~Y0*
,分别接到8片6264的各“片选”端,实现8选1的片选。低13位地址(P2.4~P2.0,P0.7~P0.0)完成对选中的6264芯片中的各个存储单元的“单元选择”。这样就把64KB存储器空间分成8个8KB空间了。64KB地址空间分配如图8-5所示。181919这里采用全地址译码方式。因此,AT89S51发出16位地址时,每次只能选中某一芯片及该芯片的一个存储单元。图8-564KB地址空间划分成8个8KB空间20如何用74LS138把64KB空间全部划分为4KB的块呢?4KB空间需12条地址线,而译码器输入只有3条地址线(P2.6~P2.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空间,地址范围为0000H~7FFFH。如果去掉图8-6中的非门,地址范围为8000H~FFFFH。把译码器的输出连到各个4KB存储器的片选端,这样就把32KB空间划分为8个4KB空间。P2.3~P2.0,P0.7~P0.0实现“单元选择”,P2.6~P2.4通过74LS138译码实现对2021图8-6
存储器空间被划分成每块4KB22各存储器芯片的片选。采用译码器划分的地址空间块都是相等的,如果将地址空间块划分为不等的块,可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码。8.2.2外部地址锁存器受引脚数的限制,P0口兼用数据线和低8位地址线,为了将它们分离出来,需在单片机外部增加地址锁存器。目前,常用的地址锁存器芯片有74LS373、74LS573等。1.锁存器74LS373是一种带三态门的8D锁存器,其引脚如图8-7所示,内部结构如图8-8所示。AT89S51与74LS373锁存器的连接如图8-9所示。2323图8-7
锁存器74LS373的引脚24
图8-874LS373的内部结构
242525图8-9AT89S51单片机P0口与74LS373的连接26引脚说明:D7~D0:8位数据输入线,Q7~Q0:8位数据输出线。G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。OE*
:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。74LS373锁存器功能如表8-3。262727282.锁存器74LS573也是一种带有三态门的8D锁存器,功能及内部结构与74LS373完全一样,只是其引脚排列与74LS373不同,图8-10为74LS573引脚图。由图8-10,与74LS373相比,74LS573的输入D端和输出Q端依次排列在芯片两侧,为绘制印制电路板提供方便。引脚说明:D7~D0:8位数据输入线。Q7~Q0:8位数据输出线。G:数据输入锁存选通信号,该引脚与74LS373的G端功能相同。2829图8-10
锁存器74LS573的引脚OE*:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。308.3静态数据存储器RAM的并行扩展AT89S51单片机片内有128BRAM,往往不能满足实际需要,必须片外扩展数据存储器。数据存储器分为动态数据存储器与静态数据存储器。在单片机应用系统中,如果外部扩展动态数据存储器,还需要有对应的刷新电路,所以,在单片机的外部扩展的数据存储器都采用静态数据存储器(SRAM)。对外部扩展的数据存储器空间访问,P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据总线。片外数据存储器RAM的读和写由AT89S51的
WR*(P3.7)和RD*(P3.6)信号控制。30318.3.1常用的静态RAM(SRAM)芯片单片机系统中常用的RAM芯片的典型型号有6116(2KB
),6264(8KB),62128(16KB),62256(32KB)。6116为24脚封装,6264、62128、62256为28脚封装。这些RAM芯片的引脚如图8-11所示。313232图8-11
常用的RAM引脚图33各引脚功能:A0~A14:地址输入线。D0~D7:双向三态数据线。CE*:片选信号输入线。对6264芯片,当24脚(CS)为高电平且CE*为低电平时才选中该片。OE*:读选通信号输入线,低电平有效。WE*
:写允许信号输入线,低电平有效。VCC
—工作电源+5V。GND
—地。RAM存储器有读出、写入、维持3种工作方式,工作方式的控制见表8-4。3334358.3.2外扩数据存储器的读写操作时序首先介绍AT89S51单片机对片外RAM的读和写两种操作时序。
1.读片外RAM操作时序AT89S51单片机若外扩一片RAM,应将其WR*引脚与RAM芯片的引脚WE*连接,RD*引脚与芯片OE*引脚连接,并控制片选信号CE*有效,见表8-4。ALE信号用作锁存单片机发出的低8位地址的控制信号。AT89S51单片机读片外RAM操作时序如图8-12所示。36图8-12AT89S51单片机读片外RAM操作时序图37在第一个机器周期的S1状态,ALE信号由低变高(见①处),读RAM周期开始。在S2状态,CPU把低8位地址A7~A0送到P0口总线上,把高8位地址A15~A8送上P2口(执行“MOVXA,@DPTR”指令才送高8位;若执行“MOVXA,@Ri”则不送高8位)。ALE的下降沿(见②处)用来把低8位地址A7~A0锁存到外部锁存器74LS373内。而高8位地址A15~A8一直锁存在P2口锁存器中(见③处)。在S3状态,P0口总线变成高阻悬浮状态④。在S4状态,执行指令“MOVXA,@DPTR”后使RD*信号变为有效(见⑤处),RD*信号使被寻址的片外RAM过片刻后把数据送上P0口总线(见⑥处),当RD*回到高电平后(见⑦处),P0总线变为悬浮状态(见⑧处)。至此,单片机读片外RAM的周期结束。37382.写片外RAM操作时序AT89S51单片机向片外RAM写(存)数据,是在执行“MOVX@DPTR,A”指令后产生的动作。这条指令执行后,单片机的WR*信号为低电平有效,使RAM的WE*端被选通。写片外RAM的操作时序如图8-13所示。开始的过程与读过程类似,但写的过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(见③处)。此间,P0总线上不会出现高阻悬浮现象。在S4状态,写控制信号WR*有效(见④处),选通片外RAM,稍过片刻,P0口上的数据就写到RAM内了,然后写控制信号WR*变为无效(见⑤处)。3939图8-13AT89S51单片机写片外RAM操作时序图408.3.3AT89S51单片机与RAM的接口设计与软件编程1.扩展RAM的接口设计与软件编程AT89S51扩展数据存储器由P2口提供高8位地址,P0口提供低8位地址和双向数据总线。单片机对片外RAM的读和写由AT89S51单片机的
RD*(P3.7)和WR*(P3.6)控制,片选端由译码器译码输出CE*控制。因此设计时,主要解决地址分配、数据线和控制信号线的连接问题。在与高速单片机连接时,还要根据时序解决读/写速度匹配问题。图8-14为用线选法扩展AT89S51外部数据存储器电路。图中数据存储器选用6264,该芯片地址线为A0~A12,故AT89S51剩余地址线为3条。404141图8-14线选法扩展外部数据存储器电路图42用线选法可扩展3片6264,对应的存储器空间见表8-5。用译码法扩展外部数据存储器的接口电路如图8-15所示。数据存储器选用62128,芯片地址线为A0~A13,剩余地址线为两条,若采用2线-4线译码器可扩展4片62128。各片62128芯片地址分配如表8-6所示。424343图8-15
译码法扩展外部数据存储器电路图4444【例8-1】编写程序将片外数据存储器中5000H~50FFH单元全部清“0”。方法1
用DPTR作为数据区地址指针,同时使用字节计数器。参考程序如下:
45 MOV DPTR,#5000H;设置数据块指针的初值 MOV R7,#00H ;设置块长度计数器初值(00H是
;循环256次) CLR ALOOP: MOVX @DPTR,A ;给一单元送“00H” INC DPTR ;地址指针加1 DJNZ R7,LOOP ;数据块长度减1,若不为0则跳
;LOOP继续清“0”HERE: SJMP HERE ;执行完毕,原地踏步4546方法2用DPTR作为数据区地址指针,但不使用字节计数器,而是比较特征地址。参考程序如下:
MOV DPTR,#5000H;设置数据块指针的初值CLR A ;A清0LOOP:MOVX @DPTR,A ;给一单元送“00H”INC DPTR ;数据块地址指针加1MOV R7,DPL ;数据块末地址加1送R7CJNER7,#0,LOOP ;与末地址+1比较HERE: SJMPHERE46472.单片机片外数据区读/写数据过程当程序运行中,执行“MOV”类指令时,表示与片内RAM交换数据;当遇到“MOVX”类指令时,表示对片外数据存储器区寻址。片外数据存储器区只能间接寻址。例如,把片外6000H单元的数据送到片内RAM50H单元中,程序如下。MOVDPTR,#6000HMOVXA,@DPTRMOV50H,A先把寻址地址6000H送到数据指针寄存器DPTR中,当执行“MOVXA,@DPTR”时,DPTR的低8位(00H)经P0口输出并锁存,高8位(60H)经P2口直接输出,根据P0口、P2口状态选中IC4(6264)的6000H单元。当读选通信号RD*为低电平时,片外6000H单元的数据经P0口送往累加器A。当执行指令MOV50H,A”时,则把该数据存入片内50H单元。48向片外数据区写数据的过程与读数据的过程类似。例如,把片内50H单元的数据送到片外4000H单元中,程序如下。MOV A,50HMOV DPTR,#4000HMOVX @DPTR,A执行第1条指令,先把片内RAM50H单元的数据送到A中,第2条指令把寻址地址4000H送到数据指针寄存器DPTR中,当执行“MOVX@DPTR,A”时,DPTR的低8位(00H)由P0口输出并锁存,高8位(40H)由P2口直接输出,根据P0口、P2口状态选中IC3(6264)的4000H单元。当写选通信号WR*有效时,A中的内容送往片外4000H单元49AT89S51单片机读写片外数据存储器中的内容,除了使用“MOVXA,@DPTR”和“MOVX@DPTR,A”外,还可以使用指令“MOVXA,@Ri”和“MOVX@Ri,A”。这时P0口装入Ri中的内容(低8位地址),而把P2口原有的内容作为高8位地址输出。下面介绍的例8-2就是采用“MOVX@Ri,A”指令的例子。【例8-2】编写程序,将程序存储器中以TAB为首地址的32个单元的内容依次传送到外部RAM以4000H为首地址的区域去。数据指针DPTR指向标号TAB的首地址。R0既指示外部RAM的地址,又表示数据标号TAB的位移量。此程序为一循环程序,循环次数为32,R0的值从0变化至31,R0的值达到32就结束循环。参考程序如下。50 MOV P2,#40H ; MOV DPTR,#TAB ;要传送数据的首地址#TAB送入数据
;指针DPTR MOV R0,#0 ;R0的初始值为0AGIN: MOV A,R0 MOVC A,@A+DPTR ;把以TAB为首地址的32个单元的内容
;送入A MOVX @R0,A ;程序存储器中表的内容送入外部RAM单元 INC R0 ;循环次数加1,即外部RAM单元的地址指针加1 CJNE R0,#32,AGIN ;判32个数据是否已经传送完毕,未完则继续HERE: SJMP HERE ;原地跳转,模拟实际要执行的其他程序段TAB:
DB …,…
;外部程序存储器中要传送的32个单元的内容518.4片内Flash存储器的编程目前许多公司生产的8051内核单片机,在芯片内部大多集成了数量不等的FlashROM,例如,美国Atmel公司生产的AT89S5x系列单片机,片内分别有不同容量的FlashROM,作为片内程序存储器使用,如表8-7所示。此时,在片内的FlashROM满足要求的情况下,扩展外部程序存储器的工作就可省去,只需讨论如何向片内的FlashROM写入程序问题。5152型
号片内闪烁存储器容量片内RAM存储器容量AT89S528KB256BAT89S5312KB256BAT89S5416KB256BAT89S5520KB256B表8-7
AT89S5x系列单片机片内的存储器资源程序存储器为只读存储器,因为这种存储器在电源关断后,仍能保存程序(称此特性为非易失性的),在系统上电后,CPU可取出这些指令重新执行。只读存储器简称ROM(ReadOnlyMemory)。ROM中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称为只读存储器。常见的只读存储器有以下几种。(1)EPROM。EPROM是用电信号编程,用紫外线擦除的只读存储器芯片。在芯片外壳的中间位置有一个圆形窗口,通过该窗口照射紫外线就可擦除原有的信息,使用编程器可将调试完毕的程序写入。(2)E2PROM(EEPROM)。E2PROM这是一种用电信号编程,也用电信号擦除的ROM芯片。对E2PROM的读写操作与RAM存储器几乎没有什么差别,只是写入的速度慢一些,但断电后仍能保存信息。53(3)FlashROM。FlashROM又称闪烁存储器(简称闪存),FlashROM是在EPROM、E2PROM的基础上发展起来的一种电擦除型只读存储器。其特点是可快速在线修改其存储单元中的数据,最大改写次数可达1万次,其读写速度很快,存取时间可达70ns,而成本却比普通E2PROM低得多。美国Atmel公司生产的AT89S5x系列单片机,在片内FlashROM满足要求的情况下,外部程序存储器的扩展工作即可省去。本节只讨论如何把已调试完毕的程序代码写入到AT89S51的片内Flash存储器中,即Flash存储器的编程问题。54AT89S51片内4K字节Flash存储器的基本性能如下:(1)可循环写入/擦除1000次。(2)存储器数据保存时间为10年。AT89S51出厂时,Flash存储器处于全部空白状态(各单元均为FFH),可直接进行编程。若不全为空白状态(即单元中有不是FFH的),应首先将芯片擦除(即各个单元均为FFH)后,方可写入调试通过的程序代码。5556AT89S51片内的Flash存储器有3个可编程的加密位,定义了3个加密级别,只要对3个加密位:LB1、LB2、LB3进行编程即可实现3个不同级别的加密。经过上述的加密处理,使解密的难度加大,但还是可以解密。现在还有一种非恢复性加密(OTP加密)方法,就是将AT89S51的第31脚(EA*)烧断或某些数据线烧断,经过上述处理后的芯片仍然正常工作,但不再具有读取、擦除、重复烧写等功能。这是一种较强的加密手段,某些型号的编程器直接具有此功能。
目前常用的编程方法主要有两种:一种是使用通用编程器编程,另一种是利用PC机通过下载线进行在线编程(ISP)。56578.4.1通用编程器编程通用编程器一般通过串行口或USB口与PC相连,并配有相应的驱动软件。在编程器与PC连接后,在PC上运行驱动软件,首先选择所要编程的单片机型号,再调入调试完毕的程序代码文件,执行写入命令,编程器就将调试通过的程序代码烧写到单片机片内的Flash存储器中。开发者只需在电子市场购买一台通用编程器即可完成上述工作。编程器通过USB口与PC通信,可进行芯片型号自动判别,编程过程中的擦除、烧写、校验等各种操作。编程器供电部分由USB端口的5V电源提供,省去笨重的外接电源并加入USB接口保护电路,即自恢复保险丝,不怕操作短路。5758编程器的驱动软件界面包含有菜单、工具栏、快捷键等,具有编程、读取、校验、空检查、擦除、Flash存储器加密等功能。8.4.2使用下载线的ISP编程AT89S5x系列单片机支持对片内Flash存储器在线编程(ISP),即PC直接通过下载线向片内Flash存储器写入程序代码。编程完毕的片内Flash存储器也可用ISP方式擦除或再编程。ISP下载线按与PC的连接分为三种类型:串口型、并口型以及USB型,可自行制作,也可在电子市场购买。由于USB接口下载线使用起来较为方便,因此目前使用普遍。购买USB接口ISP下载线时,已经配置了相应的驱动软件。59ISP下载线与单片机一端的连接端口通常采用Atmel公司提供的接口标准,即10引脚的IDC端口。图8-16所示为IDC端口的实物图以及端口的定义。采用ISP下载程序时,用户目标板上必须装有上述IDC端口,端口中的信号线必须与目标板上AT89S51的对应引脚。注意,图中的8脚P1.4(SS*)端只是对AT89LP系列单片机有效,对AT89S5x系列单片机无效,不用连接即可。使用ISP下载编程时,只需运行编程软件,按照使用说明书进行操作即可。5960图8-16IDC端口的实物图以及端口的定义6161就单片机的发展方向而言,目前已经趋向于ISP程序下载方式,一方面由于原有不支持ISP下载的芯片逐渐被淘汰(部分已经停产,如AT89C51),另一方面ISP使用起来十分方便,不需要编程器就可实现程序的下载,所以ISP下载方式已经逐步成为主流。但需要注意的是,虽然ISP的程序下载方法简单易行,但对已有的单片机系统来说,可能使用的单片机仍然是较老款式的机型,或在设计单片机系统时由于程序存储器空间不够用等原因扩展了大容量存储器,此时ISP下载方式就显得无能为力了。另外有些厂家的单片机机型不支持ISP下载方式,所以有时还是要用到编程器进行程序写入。目前,电子市场上的各种通用的编程器型号较多,只要根据自己的需求进行选择即可,这里不再赘述。
628.5E2PROM的并行扩展在以单片机为核心的智能仪器仪表、工业监控等应用系统中,某些动态测试数据以及某些状态参数数据,不仅要求能够在线修改保存,而且断电后能保持。断电后数据的保护可采用电可擦除写入的存储器E2PROM,其突出优点是能够在线擦除和改写。E2PROM与Flash存储器都可在线擦除与改写,且都可断电保存数据,区别在于Flash存储器结构简单,同样的存储容量占芯片面积较小,成本自然比E2PROM低,且大数据量下的操作速度更快,但缺点是擦除、改写都是按扇区进行的,操作过程麻烦,所以Flash存储器的结构更适合63数据量不需频繁改写的程序存储器。而传统结构的E2PROM,操作简单,可字节写入,非常适合用作运行过程中频繁改写的某些非易失的小数据量的存储器。E2PROM有并行和串行之分,并行E2PROM的速度比串行的快,容量大。例如并行的E2PROM2864A的容量为8k×8位,而串行I2C接口的E2PROM与单片机的接口简单,连线少,比较流行的是Atmel公司的串行E2PROM芯片AT24C02/AT24C08/AT24C16等。串行E2PROMAT24C02的扩展将在10.3节中的作为I2C总线扩展的设计案例介绍。本节只介绍AT89S51单片机扩展并行E2PROM芯片2864的设计。
648.5.1并行E2PROM芯片简介常见的并行芯片有2816/2816A,2817/2817A,2864A等。引脚如图8-17所示,其主要性能见表8-8
(表中芯片均为Intel公司产品)。在引脚设计上,2KB的E2PROM2816与相同容量的静态RAM6116是兼容的,8KB的E2PROM2864A与同容量的静态RAM6264也是兼容的。2816、2817和2864A的读出数据时间均为250ns,写入时间10ms。65图8-17常见的并行E2PROM引脚图66678.5.2E2PROM的工作方式下面对E2PROM
2864A的4种工作方式作以说明。
1.读方式当CE*和OE*均为低而WR*为高时,内部的数据缓冲器被打开,数据送上总线,可进行读操作。2.写方式2864A提供两种数据写入方式:页写入和字节写入。(1)页写入为提高写速度,2864A片内设置16字节的“页缓冲器”,将整个存储器阵列划分成512页,每页16字节。高9位(A12~A4)确定页,低4位(A3~68A0)选择页缓冲器中的16个地址单元之一。对2864写操作分两步来实现:第一步,在软件控制下把数据写入页缓冲器,这步称为页装载,与一般的静态RAM写操作是一样的。第二步,在最后一个字节(即第16个字节)写入到页缓冲器后20ns自动开始,把页缓冲器的内容写到E2PROM阵列中对应地址的单元中,这一步称为页存储。写方式时,CE*为低,在WE*下降沿,地址码A12~A0被片内锁存器锁存,在WE*上升沿数据被锁存。片内有一个字节装载限时定时器,只要时间未到,数据可随机地写入页缓冲器。在连续向页缓冲器写数据过程中,不用担心限时定时器会溢出,因为每当
下降沿时,限时定时器自动被复位并重新启动计时。限时定时器要求写一个字节数据时间TBLW须69满足:3
s<TBLW<20
s,这是正确对2864A页面写操作的关键。当一页装载完毕,不再WE*号时,限时定时器将溢出,页存储操作随即自动开始。首先把选中页的内容擦除,然后写入的数据由页缓冲器传递到E2PROM阵列中。(2)字节写入与页写入类似,写入一个字节,限时定时器就溢出。3.数据查询方式
用软件来检测写操作中页存储周期是否完成。在页存储期间,如对2864A执行读操作,那么读出的是最后写入的字节,若芯片的转储工作未完成,则读出数据的最高位是原来写入字节最高位的反码。据此,单片机可判断芯片的编程是否结束。如果读出的数据与写入的数据相同,表示芯片已完成编程,可继续向2864A装载下一页数据。
704.维持方式当CE*为高电平时,2864A进入低耗维持方式。此时,输出线呈高阻态,芯片的电流从140mA降至维持电流60mA。8.5.3AT89S51扩展E2PROMAT2864设计接口电路如图8-18所示。2864A的片选端CE*与P2.7连接,P2.7=0时选中2864A,
P2.4~P2.0和P0.7~P0.0作为系统的14条地址线。2864A对应的8K地址空间为6000H~7FFFH(未用到的地址线P2.6、P2.5,即A14、A13恒为高)。这8K字节存储器可作为动态数据改写与测试数据保存的非易失性存储器使用。
71图8-182864A与AT89S51单片机的接口电路72AT89S51对2864A进行写操作时所用指令包括:
MOVX@DPTR,A MOVX@Ri,AAT89S51对2864A进行读操作时所用指令包括:
MOVXA,@DPTR MOVXA,@Ri下面介绍对2864A装载一个页面数据(16个字节)的子程序WR2的编写。被写入的数据取自源数据区,子程序入口参数为:
R1=写入2864A的字节数(16B) R2=2864A的低位地址 P2=2864A的高位地址 DPTR=源数据区首地址73WR2:
MOVX A,@DPTR ;取写入的数据 MOV R2,A ;数据暂存R2,备查询 MOVX @R0,A ;写入2864A INC DPTR ;源地址指针加1 INC R0 ;目的地址指针加1 CJNER0,#00H,NEXT;低位地址指针未满跳NEXT处 INC R2 ;否则高位指针加1NEXT:
DJNZ R1,WR2 ;页面未装载完转移 DEC R0 ;页装载完,恢复最后写入数据的地址LOOP: MOVX A,@R0 ;读2864A XRL A,
R2 ;与写入的最后一个数据相异或
JB ACC.7,LOOP ;最高位不等,再查
RET
;最高位相同,一页写完上述写入程序中,完成页面装载的循环部分共8条指令,当采用12MHz晶振时,进行时间约为13
s,完全符合2864A的TBLW的宽度要求。74第9章AT89S51单片机的
并行I/O扩展
7475【内容概要】
AT89S51本身有4个I/O口P0~P3,但是真正用作I/O口线的只有P1口的8位I/O口线和P3口的某些位线。因此,在多数应用系统中,AT89S51单片机都需要进行外部I/O接口的扩展。本章介绍AT89S51单片机与常用的可编程I/O接口芯片82C55的扩展接口设计。此外还介绍了使用廉价的74LSTTL芯片以及使用AT89S51串行口进行扩展并行I/O接口的设计。本章最后介绍使用I/O口控制的声音报警接口设计。769.1I/O接口并行扩展概述由第8章可知,扩展I/O接口与扩展存储器一样,都属于系统扩展的内容。那么AT89S51单片机扩展的I/O接口应该具有哪些功能呢?9.1.1扩展的I/O接口功能AT89S51单片机扩展的I/O接口电路主要应满足以下功能要求。1.实现和不同外设的速度匹配大多数外设的速度很慢,无法和µs量级的单片机速度相比。AT89S51单片机在与外设间进行数据传送时,只有在确认外设已为数据传送做好准备的前提下才能进行数据传送。而要知道外设是否准备好,就需要I/O接口电路与外设之间传送状态信息,以实现单片机与外设之间的速度匹配。762.输出数据锁存与外设相比,由于单片机的工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。所以在扩展的I/O接口电路中应有输出数据锁存器,以保证输出数据能为慢速的接收设备所接收。3.输入数据三态缓冲输入设备向单片机输入数据时,要经过数据总线,但数据总线上可能“挂”有多个数据源,为使传送数据时不发生冲突,只允许当前时刻正在接收数据的I/O接口使用数据总线,其余的I/O接口应处于隔离状态,为此要求I/O接口电路能为数据输入提供三态缓冲功能。77789.1.2I/O端口的编址在介绍I/O端口编址之前,首先要弄清楚I/O接口(Interface)和I/O端口(Port)的概念。I/O接口是单片机与外设间的连接电路的总称。I/O端口(简称I/O口)是指I/O接口电路中具有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,传送数据的称为数据口,传送命令的称为命令口,传送状态的称为状态口。当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。每个I/O接口中的端口都要有地址,以便AT89S51单片机通过读写端口来和外设交换信息。常用的I/O端口编址有两种方式,一种是独立编址方式,另一种是统一编址方式。78791.独立编址独立编址方式就是I/O端口地址空间和存储器地址空间分开编址。优点是I/O地址空间和存储器地址空间相互独立,界限分明。但却需要设置一套专门的读写I/O端口的指令和控制信号。2.统一编址统一编址方式是把I/O端口与数据存储器单元同等对待,即每一接口芯片中的一个端口就相当于一个RAM存储单元。AT89S51单片机使用的就是I/O端口和外部数据存储器RAM统一编址的方式。因此AT89S51的外部数据存储器空间也包括I/O端口在内。统一编址方式的优点是不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O读写操作,简单、方便。但是需要把数据存储器单元地址与I/O端口的地址划分清楚,避免发生数据冲突。809.1.3I/O数据的传送方式为实现和不同外设的速度匹配,I/O接口必须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。1.同步传送同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,最典型的同步传送就是单片机和外部数据存储器之间的数据传送。2.查询传送查询传送又称有条件传送(也称异步式传送)。单片机通过查询外设80“准备好”后,再进行数据传送。该方式的优点是通用性好,硬件连线和查询程序十分简单,但由于单片机的程序在运行中经常查询外设是否“准备好”,因此工作效率不高。3.中断传送为了提高单片机对外设的工作效率,通常采用中断传送方式,即利用AT89S51单片机本身的中断功能和I/O接口的中断功能来实现I/O数据的传送。单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。因此,采用中断方式可以大大提高单片机的工作效率。81829.1.4I/O接口电路目前常用的外围I/O接口芯片有:(1)82C55—可编程的通用并行接口电路(3个8位I/O口);(2)81C55—可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256个RAM字节单元,1个14位的减法计数器)。它们都可以和AT89S51单片机直接连接,且接口逻辑十分简单。本章仅介绍AT89S51单片机扩展I/O接口芯片82C55的设计。82839.2AT89S51扩展I/O接口芯片82C55的设计本节首先简要介绍可编程并行I/O接口芯片82C55的应用特性,然后介绍AT89S51单片机与82C55的接口电路设计以及软件设计。9.2.182C55芯片简介82C55是Intel公司生产的可编程并行I/O接口芯片,它具有3个8位的并行I/O口,3种工作方式,可通过编程改变其功能,因而使用灵活方便,可作为单片机与多种外围设备连接时的中间接口电路。82C55的引脚及内部结构如图9-1和图9-2所示。838484图9-182C55的引脚图9-282C55的内部结构851.引脚说明由图9-1可知,82C55共有40个引脚,采用双列直插式封装,各引脚功能如下。D7~D0:三态双向数据线,与单片机的P0口连接,用来与单片机之间传送数据信息。CS*:片选信号线,低电平有效,表示本芯片被选中。RD*:读信号线,用来读出82C55端口数据的控制信号。WR*:写信号线,用来向82C55写入端口数据的控制信号。Vcc:+5V电源。PA7~PA0:端口A输入/输出线。PB7~PB0:端口B输入/输出线。PC7~PC0:端口C输入/输出线。86A1、A0:地址线,用来选择82C55内部的4个端口。RESET:复位引脚,高电平有效。2.内部结构82C55内部结构如图9-2所示,其中包括3个并行数据输入/输出端口,两种工作方式的控制电路,一个读/写控制逻辑电路和一个8位数据总线缓冲器。图9-2中左侧的引脚与AT89S51单片机相连,右侧的引脚与外设连接。各部件的功能如下。(1)端口PA、PB、PC82C55有3个8位并行口PA、PB和PC,它们都可以选为输入/输出工作模式,但在功能和结构上有些差异。8687PA口:一个8位数据输出的锁存器和缓冲器;一个8位数据输入的锁存器。PB口:一个8位数据输出的锁存器和缓冲器;一个8位数据输入的缓冲器。PC口:一个8位数据输出的锁存器;一个8位数据输入的缓冲器。通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件的控制下,作为两个4位端口,作为端口PA、PB选通方式操作时的状态控制信号。(2)A组和B组控制电路这是两组根据AT89S51单片机写入的“命令字”控制82C55工作方式的控制电路。A组控制PA口和PC口的上半部(PC7~PC4);B组控制PB口8788和PC口的下半部(PC3~PC0),并可使用“命令字”来对端口PC的每一位实现按位置“1”或清“0”。(3)数据总线缓冲器数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。(4)读/写控制逻辑电路读/写控制逻辑电路接收AT89S51单片机发来的控制信号、、RESET、地址信号A1、A0等,然后根据控制信号的要求,端口数据被AT89S51单片机读出,或者将AT89S51单片机送来的数据写入端口。各端口的工作状态与控制信号的关系如表9-1所示。888989909.2.2工作方式选择控制字及端口PC置位/复位控制字AT89S51单片机可以向82C55控制寄存器写入两种不同的控制字。首先来介绍工作方式选择控制字。1.工作方式选择控制字82C55的端口有如下3种基本工作方式:(1)方式0—基本输入/输出;(2)方式1—选通输入/输出;(3)方式2—双向传送(仅PA口有此工作方式)。 端口的3种工作方式由写入控制寄存器的方式控制字来决定。方式控制字的格式如图9-3所示。最高位D7=1,为本方式控制字的标志,以便与后面介绍的端口PC口置位/复位控制字相区别(端口PC置位/复位控制9091图9-382C55的方式控制字格式92字的最高位D7
=
0)。3个端口中PC口被分为两个部分,上半部分随PA口称为A组,下半部分随PB口称为B组。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。【例9-1】AT89S51单片机向82C55的控制寄存器写入工作方式控制字95H,根据图9-3所示,可将82C55编程设置为:PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7~PC4)方式0输出,PC口的下半部分(PC3~PC0)方式1输入。MOV DPTR,#××××H
;控制字寄存器端口地址××××H送DPTRMOV A,#95H
;方式控制字95H送AMOVX @DPTR,A
;控制字95H送控制字寄存器932.PC口按位置位/复位控制字AT89S51单片机控制82C55的另一个控制字为PC口按位置位/复位控制字。即PC口8位中的任何一位,可用一个写入82C55控制口的置位/复位控制字来对PC口按位置“1”或清“0”,这一功能主要用于位控。PC口按位置位/复位控制字的格式如图9-4所示。【例9-2】AT89S51单片机向82C55的控制字寄存器写入置位/复位控制字07H,则PC3置1;08H写入控制口,则PC4清0。程序段如下:939494图9-4PC口按位置位/复位控制字格式959.2.382C55的3种工作方式82C55的3种工作方式介绍如下。1.方式0方式0是一种基本输入/输出方式。在方式0下,AT89S51单片机可对82C55进行I/O数据的无条件传送。例如,AT89S51单片机从82C55的某一输入口读入一组开关状态,从82C55输出控制一组LED指示灯的亮、灭。实现这些操作,并不需要任何条件,外设的I/O数据可在82C55的各端口得到锁存和缓冲。因此,82C55的方式0称为基本输入/输出方式。方式0下,3个端口都可以由软件设置为输入或输出,不需要应答联络信号。方式0的基本功能如下:9596(1)具有两个8位端口(PA、PB)和两个4位端口(PC的上半部分和下半部分);(2)任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合。82C55的PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制寄存器写入工作方式控制字(见图9-3),来规定各端口为输入或输出方式。【例9-3】假设82C55的控制字寄存器端口地址为FF7FH,则令PA口和PC口的高4位工作在方式0输出,PB口和PC口的低4位工作于方式0输入,初始化程序如下:97MOV DPTR,#0FF7FH
;控制字寄存器端口地址0FF7F送DPTRMOV A,#83H
;方式控制字83H送AMOVX @DPTR,A ;控制字83H送控制寄存器2.方式1方式1是一种采用应答联络的输入/输出工作方式。PA口和PB口皆可独立地设置成这种工作方式。在方式1下,82C55的PA口和PB口通常用于I/O数据的传送,PC口用作PA口和PB口的应答联络信号线,以实现采用中断方式来传送I/O数据。PC口的PC7~PC0的应答联络线是在设计82C55时规定好的,其各位分配如图9-5和图9-7所示,图中,标有I/O的各位仍可用作基本输入/输出,不作应答联络用。下面简单介绍方式1输入/输出时的应答联络信号与工作原理。9798(1)方式1输入当任意端口工作于方式1输入时,各应答联络信号如图9-5所示。其中与IBF为一对应答联络信号。图9-5中各应答联络信号的功能如下。STB*—是由输入外设发给82C55的选通输入信号,低电平有效。IBF—输入缓冲器满,应答信号。82C55通知外设已收到外设发来的且已进入输入缓冲器的数据,高电平有效。INTR—由82C55向AT89S51单片机发出的中断请求信号,高电平有效。INTEA—控制PA口是否允许中断的控制信号,由PC4的置位/复位来控制。INTEB—控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制。989999图9-5
方式1输入应答联络信号100图9-6PA口方式1输入工作过程示意图方式1输入的工作示意图如图9-6所示。下面以PA口的方式1输入为例,介绍方式1输入的工作过程。①当外设向82C55输入一个数据并送到PA7~PA0上时,外设自动在选通输入线上向82C55发送一个低电平选通信号。②82C55收到选通信号后,首先把PA7~PA0上的输入数据存入PA口的输入数据缓冲/锁存器,然后使输出应答线IBFA变为高电平,以通知输入外设,82C55的PA口已收到它送来的输入数据。101102③
82C55检测到由低电平变为高电平、IBFA(PC5)为“1”状态和中断允许INTEA(PC4)=
1时,使INTRA(PC3)变为高电平,向AT89S51单片机发出中断请求。INTEA的状态可由用户通过指令对PC4的单一置位/复位控制字来控制。④AT89S51单片机响应中断后,进入中断服务子程序来读取PA口的外设发来的输入数据。当输入数据被AT89S51单片机读走后,82C55撤销INTRA上的中断请求,并使IBFA变为低电平,以通知输入外设可以传送下一个输入数据。
102103(2)方式1输出当PA口、PB口按照方式1输出时,应答联络信号如图9-7所示。OBF*与ACK*构成了一对应答联络信号,图9-7中各应答联络信号的功能如下。OBF*:端口输出缓冲器满信号,低电平有效,它是82C55发给外设的联络信号,表示AT89S51单片机已经把数据输出到82C55的指定端口,外设可以将数据取走。ACK*:外设的应答信号,低电平有效。表示外设已把82C55端口的数据取走。INTR:中断请求信号,高电平有效。表示该数据已被外设取走,向AT89S51单片机发出中断请求,如果AT89S51响应该中断,则在中断服务子程序中向82C55的端口写入要输出的下一个数据。104图9-7
方式1输出应答联络信号105INTEA:控制PA口是否允许中断的控制信号,由PC6的置位/复位来控制。INTEB:控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制。方式1输出工作示意图如图9-8所示。下面以PB口的方式1输出为例,介绍方式1输出的工作过程。
105106图9-8PB口方式1输出工作过程示意图107①AT89S51单片机可以通过“MOVX@Ri,A”指令把输出数据送到B口的输出数据锁存器,82C55收到后便令输出缓冲器满引脚(PC1)变为低电平,以通知输出设备输出的数据已在PB口的PB7~PB0上。②输出外设收到上低电平后,先从PB7~PB0上取走输出数据,然后使B变为低电平,以通知82C55输出外设已收到82C55输出给外设的数据。③82C55从应答输入线收到低电平后就对和中断允许控制位INTEB状态进行检测,若它们皆为高电平,则INTRB变为高电平而向AT89S51单片机请求中断。④单片机响应INTRB上中断请求后便可通过中断服务程序把下一个输出数据送到PB口的输出数据锁存器。重复上述过程,完成数据的输出。1083.方式2只有PA口才能设定为方式2。图9-9所示为方式2下的工作过程示意图。方式2实质上是方式1输入和方式1输出的组合。在方式2下,PA7~PA0为双向I/O总线。当作为输入端口使用时,PA7~PA0受和IBFA控制,其工作过程和方式1输入时相同;当作为输出端口使用时,PA7~PA0受、控制,其工作过程和方式1输出时相同。方式2特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过PA口送给单片机,有时又需要把单片机发出的数据通过PA口送给显示器显示。108109109图9-9PA口在方式2下的工作示意图1109.2.4AT89S51单片机与82C55的接口设计1.硬件接口电路图9-10所示为AT89S51单片机扩展一片82C55的电路图。图中,74LS373是地址锁存器,P0.1、P0.0经74LS373与82C55的地址线A1、A0连接;P0.7经74LS373与片选端相连,其它地址线悬空;82C55的控制线、直接与AT89S51单片机的和端相连;AT89S51单片机的数据总线P0.0~P0.7与82C55的数据线D0~D7连接。2.确定82C55端口地址
图9-10中82C55只有3条线与AT89S51单片机的地址线相接,片选端、端口地址选择端A1、A0,分别接与P0.7、P0.1、P0.0相连的8D锁存器的110输出端Q7、Q1、Q0,其他地址线全悬空。显然只要保证P0.7为低电平时,即可选中82C55;若P0.1、P0.0再为“00”,则选中82C55的PA口。同理P0.1、P0.0为“01”、“10”、“11”分别选中PB口、PC口及控制口。若端口地址用16位表示,其他未用端全设为“1”(也可把无用端全设为“0”,但一般习惯上把未用端置“1”),则82C55的PA、PB、PC及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。111112112图9-10AT89S51单片机扩展一片82C55的接口电路1131133.软件编程在实际应用设计中,必须根据外部设备的类型选择82C55的工作方式,并在初始化程序中把相应控制字写入控制口。下面根据图9-10,介绍对82C55进行操作的编程。【例9-4】要求82C55工作在方式0,且PA口作为输入,PB口、PC口作为输出,则程序如下:114114【例9-5】对端口PC的置位/复位。82C55的PC口8位中的任意一位,均可用指令来置位或复位。例如,如果想把PC口的PC5置“1”,相应的控制字为00001011B
=
0BH(关于115
82C55接口芯片在AT89S51单片机应用系统中广泛用于与各种外部数字设备,如打印机、键盘、显示器的接口电路,以及作为数字信息的输入、输出接口。82C55的PC口置位/复位的控制字说明见图9-4)。程序段如下:1169.3利用74LSTTL电路扩展并行I/O口在AT89S51单片机应用系统中,有些场合需要降低成本、缩小体积,这时采用TTL、CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口。通常这种I/O都是通过P0口扩展。由于P0口只能分时复用,故构成输出口时,接口芯片应具有锁存功能;构成输入口时,要求接口芯片应能三态缓冲输入,而数据的输入、输出则由单片机的读/写信号控制。图9-11所示为一个利用74LS244(缓冲输入驱动器)和74LS273(8D锁存器)芯片,将P0口扩展成简单的输入/输出口的电路。74LS244和74LS273的工作受AT89S51单片机的P2.0、、
3条控制线控制。74LS244116作为扩展输入口,它的8个输入端分别接8个按钮开关。74LS273的输出端接8个LED发光二极管,以显示8个按钮开关状态。当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。该电路的工作原理如下。117118当P2.0=0,RD*=
0(WR*=
1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51单片机片内。当P2.0=0,WR*=0(RD*=1)时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。总之,在图9-11中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。118119119图9-1174LSTTLI/O扩展举例120输入程序段:MOVDPTR,#0FEFFH ;I/O地址→DPTRMOVXA,@DPTR ;RD*为低,74LS244接口数据读入片内A中输出程序段:MOV A,#data ;数据#data→AMOV DPTR,#0FEFFH ;I/O地址#0FEFFH→DPTRMOVX @DPTR,A ;WR*为低,数据经74LS273口输出【例9-6】编写程序把按钮开关状态通过图9-11中的点亮的发光二极管的位置显示出来。程序段如下:120121由以上程序可以看出,对于所扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图9-11仅仅扩展了两片,如果仍不够用,还可扩展多片74LS244、74LS273之类的芯片。但作为输入口时,一定要求有三态输入缓冲功能,否则将影响总线的正常工作。9.4用AT89S51单片机的串行口扩展并行口AT89S51单片机串行口的方式0用于I/O扩展。在方式0时,串行口为同步移位寄存器工作方式,其波特率是固定的,为fosc/12(fosc为系统的振荡器频率)。数据由RXD端(P3.0)输入,同步移位时钟由TXD端(P3.1)输出。发送、接收的数据是8位,低位在先。1221229.4.1用74LS165扩展并行输入口图9-12所示为串行口外接两片74LS165扩展两个8位并行输入口的接口电路。74LS165是8位并行输入串行输出的寄存器。当74LS165的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏南通市海安市城建开发投资集团有限公司招聘国有企业人员取得相应考试笔试历年参考题库附带答案详解
- 2025广东江门鹤山市常青有限公司招聘2人(第三季)笔试历年参考题库附带答案详解
- 2025年福建省五建建设集团有限公司招聘劳务派遣制14人笔试历年参考题库附带答案详解
- 2025年中国能源建设集团安徽电力建设第二工程有限公司招聘102人笔试历年参考题库附带答案详解
- 2025山东日照市水产集团总公司招聘总及考察人员笔试历年参考题库附带答案详解
- 2025安徽华嘉工程项目管理有限公司长期引进工程管理岗位专业人才14人笔试历年参考题库附带答案详解
- 2025四川雅安市华盛建筑工程有限公司招聘项目现场技术管理任务制人员招聘25人笔试历年参考题库附带答案详解
- 2025四川筑臻劳务服务有限公司调整招聘劳务派遣人员部分岗位条件及笔试历年参考题库附带答案详解
- 2025四川安州区旅投文化产业发展有限公司招聘10人笔试历年参考题库附带答案详解
- 2025四川乐山市马边彝族自治县县属国有企业领导人员招聘5人笔试历年参考题库附带答案详解
- 2026四川德阳市什邡市教育和体育局选调高(职)中教师13人备考题库附答案详解
- 2026江西赣州市安远县东江水务集团有限公司第一批人员招聘10人备考题库含答案详解(b卷)
- 企业一般固废管理制度
- 2026年花样滑冰赛事品牌建设与营销创新案例研究
- 2026山东青岛海关缉私局警务辅助人员招聘10人考试参考题库及答案解析
- 2026年考研数学一模拟单套试卷(含解析)
- 旅馆防偷拍工作制度
- 2026贵州贵阳市信昌融合实业发展有限公司招聘16人笔试备考试题及答案解析
- 2026年北京市丰台区高三一模英语试卷(含答案)
- 山西晋城市2026届高三下学期一模历史试题(含答案)
- 建筑项目工程款审核流程模板
评论
0/150
提交评论