版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章MCS-51存储器的扩展8.1随机读写存储器RAM的扩展8.2只读存储器ROM的扩展8.3地址译码的方法8.4I/O扩展8.48.5串行扩展原理8.1随机读写存储器RAM的扩展并行扩展总线访问外部存储器的时序波形不执行MOVX指令时访问外部存储器的时序波形执行MOVX指令时
程序存储器的扩展要解决的几个问题:
1、程序存储器的作用——存放程序代码或常数表格
2、扩展时所用芯片——一般用只读型存储器芯片(可以是EPROM、E2PROM、FLASH芯片等)。
3、扩展电路连接——用EPROM2716、2732等扩展程序存储器。
4、存储器地址分析——单片机输出什么地址值时,可以指向存储器中的某一单元。单片机最小系统无ROM芯片:8031必须扩展ROM,复位、晶振电路有ROM芯片:89c51等,不必扩展ROM,只要有复位、晶振电路使单片机能运行的最少器件构成的系统。扩展使用的三总线地址总线:P0-低8位
P2-高8位数据总线:P0控制总线:RD、WR、ALE、/PSEN
(读、写、地址锁存允许、外程序存储器读选通)8.1.1RAM数据存储器一般采用RAM芯片,这种存储器在电源关断后,存储的数据将全部丢失。RAM器件有两大类:动态RAM(DRAM),一般容量较大,易受干扰,使用略复杂。静态RAM(SRAM),在工业现场常使用SRAM.8.1.2SRAM的引脚型号:6264前两位数62,表示SRAM后两位64÷8=8k字节容量Intel6264的容量为8K×8,有28个引脚。各引脚的功能如下:•Al2~A0:地址信号输入引脚,可寻址芯片的8K个存储单元。•D7~D0(O0~O7):双向数据信号输入输出引脚。•/OE:数据输出允许控制信号引脚,输入,低电平有效,用以允许数据输出。•/WE:数据输入允许控制信号引脚,输入,低电平有效,用以允许数据输入。•CS1:片选信号输入引脚,低电平有效,只有当该引脚转入低电平时,才能对相应的芯片进行操作。•CS2:片选信号输入引脚,高电平有效,只有当该引脚转入高电平时,才能对相应的芯片进行操作。•Vcc:+5v电源,用于在线的读操作。•GND:地。6264A0A1A2A3A4A5A6A7A8A9A10A11A12WEOECS1CS2D0D1D2D3D4D5D6D762644)读写线OE、WE(R/W) 连接读写控制线RD、WR。8.1.3RAM存储器的连接存储器与微型机三总线的连接:
DB0~n
AB0~ND0~nA0~N
ABN+xCSR/WR/W微型机存储器1)数据线D0~n 连接数据总线DB0~n2)地址线A0~N 连接地址总线低位AB0~N。3)片选线CS 连接地址总线高位ABN+x。外部总线的扩展一、外部总线的扩展MCS-51外部三总线示意图8.1.4地址锁存器的原理
8D锁存器74LS3738D锁存器74LS373图8.374LS373结构示意图
地址锁存器芯片74LS373与74LS573只是引脚布置的不同。74LS273的11脚G逻辑与以上相反。单片机复用总线结构,数据与地址分时共用一组总线。ALE地址锁存地址锁存地址输出数据有效地址输出数据有效AD0~n数据采样数据采样R/W单片机
AD0~7
ALER/WD0~7A0~7R/W存储器Di
QiG地址锁存器
AD8~n
A8~n静态RAM芯片图6264管脚图I/O0~7:数据线A0~A12:地址线CE、CE:片选线OE:输出使能WE:写入使能VCC、GND:电源NC:未使用表6264的工作方式2009年3月30日星期一8.1.562128与MCS51的连接8.2只读存储器ROM的扩展工作时,ROM中的信息只能读出,要用特殊方式写入(固化信息),失电后可保持信息不丢失。ROM有5种:
(1)掩模工艺ROM
这种ROM是芯片制造厂根据ROM要存贮的信息,设计固定的半导体掩模版进行生产的。一旦制出成品之后,其存贮的信息即可读出使用,但不能改变。这种ROM常用于批量生产,生产成本比较低。微型机中一些固定不变的程序或数据常采用这种ROM存贮。(2)可一次性编程ROM(PROM)
为了使用户能够根据自己的需要来写ROM,厂家生产了一种PROM。允许用户对其进行一次编程──写入数据或程序。一旦编程之后,信息就永久性地固定下来。用户可以读出和使用,但再也无法改变其内容。(3)紫外线擦除可改写ROM(EPROM)
可改写ROM芯片的内容也由用户写入,但允许反复擦除重新写入。EPROM是用电信号编程而用紫外线擦除的只读存储器芯片。在芯片外壳上方的中央有一个圆形窗口,通过这个窗口照射紫外线就可以擦除原有的信息。由于阳光中有紫外线的成分,所以程序写好后要用不透明的标签封窗口,以避免因阳光照射而破坏程序。EPROM的典型芯片是Intel公司的27系列产品,按存储容量不同有多种型号,例如2716(2KB′8)、2732(4KB′8)、2764(8KB′8)、27128(16KB′8)、27256(32KB′8)等,型号名称后的数字表示其存储容量。(4)电擦除可改写ROM(EEPROM或E2PROM)
这是一种用电信号编程也用电信号擦除的ROM芯片,它可以通过读写操作进行逐个存储单元读出和写入,且读写操作与RAM存储器几乎没有什么差别,所不同的只是写入速度慢一些。但断电后却能保存信息。典型E2PROM芯片有28C16、28C17、2817A等。(5)快擦写ROM(flashROM)
E2PROM虽然具有既可读又可写的特点,但写入的速度较慢,使用起来不太方便。而flashROM是在EPROM和E2PROM的基础上发展起来的一种只读存储器,读写速度都很快,存取时间可达70ns,存储容量可达16MB~128MB。这种芯片可改写次数可从1万次到100万次。典型flashROM芯片有28F256、28F516、AT89等。存储器芯片的控制线:对于程序存储器,一般来说,具有读操作控制线(OE),它与单片机的/PSEN信号线相连。除此之外,对于EPROM芯片还有编程脉冲输入线(PRG)、编程状态线(READY/BUSY)。PRG应与单片机在编程方式下的编程脉冲输出线相接;READY/BUSY在单片机查询输入/输出方式下,与一根I/O口线相接;在单片机中断工作方式下,与一个外部中断信号输入线相接。存储器芯片的数据线:数据线的数目由芯片的字长决定。1位字长的芯片数据线有一根;4位字长的芯片数据线有4根;8位字长的芯片数据线有8根;存储器芯片的数据线与单片机的数据总线(P0.0~P0.7)按由低位到高位的顺序顺次相接。2013-10-21存储器芯片的地址线数目总是少于单片机地址总线的数目,如此相接后,单片机的高位地址线总有剩余。剩余地址线一般作为译码线,译码输出与存储器芯片的片选信号线相接。存储器芯片有一根或几根片选信号线。对存储器芯片访问时,片选信号必须有效,即选中存储器芯片。片选信号线与单片机系统的译码输出相接后,就决定了存储器芯片的地址范围。因此,单片机的剩余高位地址线的译码及译码输出与存储器芯片的片选信号线的连接,是存储器扩展连接的关键问题。8.2.127xx的引脚27256的结构逻辑图如上图所示。ROM芯片内部集成了输出缓冲器,地址译码器。
2716有2KB容量,共有11位地址线。
2716信号引脚图说明如下。①A0~A14为14位地址线。②O0~O7为8位数据线。③/CE/PGM为双重功能控制线。/PGM或为A14当工作在应用系统中时,为片选信号CE,即低电平时选中该芯片;当工作在编程过程中,为编程控制信号PGM,用于引入编程脉冲。
④/OE为输出允许信号。
低电平时,打开缓冲器(三态门)。⑤VPP
为编程电源输入线。
工作在应用系统时,接+5V电源;工作在编程时,加+25V电压。⑥VCC为主电源线,接+5V电源。⑦GND为地线。⑧NC:不连接对EPROM的主要操作方式有:.编程方式:把程序代码(机器指令、常数)固化到EPROM中。.编程校验方式:读出EPROM中的内容,检验编程操作的正确性。.读出方式:CPU从EPROM中读取指令或常数,是单片机应用系统中的工作方式。.维持方式:不对EPROM操作,数据端呈高阻。.编程禁止方式:适用于多片EPROM并行编程不同数据。表6-1给出了27256不同操作方式下控制引脚的电平。不同公司生产的EPROM的编程电压不同,有12.5V、21V、25V等几种。表27256工作方式选择8.2.227128与MCS51的连接与RAM的不同点:只有一片ROM时,CE可以接地
OE接/PSENMCS51同时扩展ROM和RAM兼有片外ROM,又有片外RAM的扩展连接图8.2.3EEPROM与单片机的典型连接电路2817的写入时间大约为15ms左右
2817A的擦写程序如下。
MOVR0,#30H;置写入数据区首地址
MOVR2,#10H;置写入数据区长度
MOVDPTR,#Addr;置E2PROM擦写单元首地址
LOOP:JNBP1.0,LOOP;查询E2PROM忙否?
MOVA,@R0;取改写数据
MOVX@DPTR,A;改写
INCR0;修改写入数据区地址
INCDPTR;修改写入单元地址
DJNZR2,LOOP;未全部写完,继续
RET
1.线选法
线选法就是用剩余的高位地址线作片选信号。
线选法有2个缺点:其一是各芯片的地址不连续,其二是有一些地址不能使用,否则会造成片选的混乱(有地址重叠现象,即一个存储单元有多个地址码)。不管芯片内有多少个单元,所占的地址空间是一样的.
8.3地址译码的方法线选法
P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0A7A6A5A4A3A2A1A0Ⅰ:1100000000000000=C000H
~1101111111111111~DFFFHⅡ:1010000000000000=A000H
~1011111111111111~BFFFHⅢ:0110000000000000~0111111111111111=6000H~7FFFH图8.12用两片2764EPROM的扩展连接图左片:00000000000000000~0001111111111111,即0000H~1FFFH;
00100000000000000~0011111111111111,即2000H~3FFFH;
01000000000000000~0101111111111111,即4000H~5FFFH;
01100000000000000~0111111111111111,即6000H~7FFFH;右片:10000000000000000~1001111111111111,即8000H~9FFFH;
10100000000000000~1011111111111111,即A000H~BFFFH;
11000000000000000~1101111111111111,即C000H~DFFFH;
11100000000000000~1111111111111111,即E000H~FFFFH。2.译码片选法
微型机剩余高位地址总线通过地址译码器输出片选信号。
多片存储器芯片组成大容量存储器连接常用片选方法。译码法又分为全地址译码和部分地址译码两种。
完全译码:译码器使用全部地址线,地址与存储单元一一对应;部份译码:译码器使用部份地址线,地址与存储单元不是一一对应。部份译码会大量浪费寻址空间,对于要求存储器空间大的微机系统,一般不采用。但对于单片机系统,由于实际需要的存储容量不大,采用部份译码可简化译码电路。
全地址译码
3-8地址译码器:74LS138译码片选法Y0、Y1、Y2分别连接三片存储器的片选端CE1、CE2、CE3AB13AB14AB15+5VA Y0BY1CY2G1…G2A.BY774LS138各片存储器芯片分配地址:CE1CE2CE3Ⅰ:0000H~1FFFHⅡ:2000H~3FFFHⅢ:4000H~5FFFH部分地址译码3.二级译码器当系统扩展了一片大容量的RAM,使得能参与译码的地址线较少,同时又需扩展较多的I/O口时,可采用对较低位地址线再译码的方法,此时第一级译码器产生的片选信号作为第二级译码器的使能信号
例要求用2764芯片扩展8031的片外程序存储器空间,分配的地址范围为0000H~3FFFH。本例采用完全译码方法。
(1)确定片数。因0000H~3FFFH的存储空间为16KB,则所需芯片数=实际要求的存储容量/单个芯片的存储容量
=16KB/8KB =2(片)(2)分配地址范围。(3)存储器扩展连接如图所示。图采用地址译码器扩展存储器的连接图8.4I/O扩展8.4.1I/O口扩展概述1.MCS-51单片机I/O口扩展性能单片机应用系统中的I/O口扩展方法与单片机的I/O口扩展性能有关。
(1)在MCS-51单片机应用系统中,扩展的I/O口采取与数据存储器相同的寻址方法。所有扩展的I/O口或通过扩展I/O口连接的外围设备均与片外数据存储器统一编址。任何一个扩展I/O口,根据地址线的选择方式不同,占用一个片外RAM地址,而与外部程序存储器无关。(2)利用串行口的移位寄存器工作方式(方式0),也可扩展I/O口,这时所扩展的I/O口不占用片外RAM地址。(3)扩展I/O口的硬件相依性。在单片机应用系统中,I/O口的扩展不是目的,而是为外部通道及设备提供一个输入、输出通道。因此,I/O口的扩展总是为了实现某一测控及管理功能而进行的。例如连接键盘、显示器、驱动开关控制、开关量监测等。这样,在I/O口扩展时,必须考虑与之相连的外部硬件电路特性,如驱动功率、电平、干扰抑制及隔离等。(4)扩展I/O口的软件相依性。根据选用不同的I/O口扩展芯片或外部设备时,扩展I/O口的操作方式不同,因而应用程序应有不同,如入口地址、初始化状态设置、工作方式选择等。
2.I/O口扩展用芯片MCS-51系列单片机扩展井行1/0端口。适合MCS-51系列单片机外围功能扩展的器件主要有以下两大类:①TTL电路芯片。常用的有各种锁存器和三态缓冲器74LS373,273,374,367,377;有总线驱动器74LS244,245以及移位寄存器74LS164,74LS165②1nte18080/8085CPU的通用外围接口芯片8155:可编程并行I/O接口,带256字节RAM和一个14位定时器/计数器.8255:可编程井行I/O8251:可编程通用同步/异步串行接口8253:可编程定时器/计数器接口芯片8279:可编程健盘/显示接口上述接口芯片均司与MCS-51早片机系统总线直接连接
3.I/O口扩展方法根据扩展并行I/O口时数据线的连接方式,I/O口扩展可分为总线扩展方法、串行口扩展方法和I/O口扩展方法。(1)总线扩展方法。扩展的并行I/O芯片,其并行数据输入线取自MCS-51单片机的P0口。这种扩展方法只分时占用P0口,并不影响P0口与其它扩展芯片的连接操作,不会造成单片机硬件的额外开销。因此,在MCS-51单片机应用系统的I/O扩展中广泛采用这种扩展方法。微型机总线扩展驱动
在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。常用的总线驱动器系统总线中地址总线和控制总线是单向的,因此驱动器可以选用单向的,如74LS244。74LS244还带有三态控制,能实现总线缓冲和隔离。.
系统中的数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245也是三态的,有一个方向控制端DIR,DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。总线驱动器芯片管脚(a)单向驱动器;(b)双向驱动器1G,2G为H时,Y为高阻;1G,2G为L时,Y=AG为H时,Y为高阻;G=L,DIR=0;B→AG=L,DIR=1;A→B当单片机外接芯片较多,超出总线负载能力,必须加总线驱动器。单向驱动器74LS244用于地址总线驱动双向驱动器74LS245用于数据总线驱动微型机总线扩展驱动A15(P2.7)取0,其余地址线均取1,则74LS377的地址为7FFFH。当执行以下三条指令时,在74LS377的有关引脚,就会出现图6-11所示的信号,把累加器A的内容锁存到74LS377中。
MOVDPTR,#7FFFH:指向74LS377MOVA,#data;输出的数据先送AMOVX@DPTR,A;A中数据通过P0口送往74IS377
适宜作为并行输出口的芯片还有74IS273、741S373等8D锁存器,但接口电路应稍作修改。在执行以下两条指令时,在74IS245的有关引脚,就会出现图6-13所示的信号,把输入设备的数据通过7415245传送到数据总线,送往累加器A。
MOVDPTR,#7FFFHMOVXA,@DPTR(2)串行口扩展方法。这是MCS-51单片机串行口在方式0工作状态下所提供的I/O口扩展功能。串行口方式0为移位寄存器工作方式,因此接上串入并出的移位寄存器可以扩展并行输出口,而接上并入串出的移位寄存器则可扩展并行输入口。这种扩展方法只占用串行口,而且通过移位寄存器的级联方法可以扩展多数量的并行I/O口。对于不使用串行口的应用系统,可使用这种方法。但由于数据的输入输出采用串行移位的方法,传输速度较慢。(3)通过单片机片内I/O口的扩展方法。这种扩展方法的特征是扩展芯片的输入输出数据线不通过P0口,而是通过其它片内I/O口。即扩展片外I/O口的同时也占用片内I/O口,所以使用较少,但在MCS-51单片机扩展8243时,为了模拟8243的操作时序,不得不使用这种方法。8.4.28255可编程并行I/O口扩展1.芯片引脚及其内部结构图8.188255A芯片的引脚图图8.198255A芯片的内部结构图8255的内部结构框图如图8.19所示。从图可以看到,左边的信号与系统总线相连。而右边是与外设相连接的三个口。8255A可编程并行I/0芯片由以下四个逻辑结构组成:
1)数据总线驱动器。这是双向三态的8位驱动器,用于和单片机的数据总线相连,以实现单片机与8255A芯片的数据传送。
2)并行1/0端口,A口、B口和C口。这三个8位I/0端口功能完全由编程决定,但每个口都有自己的特点。
A口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入锁存器。它是最灵活的输入输出寄存器,可编程作为名位输入输出或双向寄存器。B口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。可编程作为8位输入或输出寄存器,但不能双向输入输出。C口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。这个口通过方式控制字,可分为两个4位口使用。C口除作输入、输出口使用外,还可以作为A口、B口选通方式操作时的状态控制信号。3)读/写控制逻辑。它用于管理所有的数据、控制字或状态字的传送,接收单片机的地址信号和控制信号来控制各个口的工作状态。
/CS:8255A的片选引脚端。
/RD:读控制端。当/RD=0时,允许单片机从8255A读取数据或状态字。
/WR:写控制端。当丽/WR=0时,允许单片机将数据或控制字写入8255A.A0、Al:口地址选择。通过A0、Al可选中8255A的4个寄存器。口地址选择如下:
A1A0寄存器
00输出寄存器A(A口)
01输出寄存器B(B口)
10输出寄存器C(C口)
11控制寄存器(控制口)
RESET:复位控制端。当RESET=1时,8255复位。复位状态是:控制寄存器被清除,所有接口(A、B、C)被置入输入方式。4)A组、B组控制块。每个控制块接收来自读/写控制逻辑的命令和内部数据总线的控制字,并向对应口发出适当的命令。
A组控制块控制A口及C口的高4位。
B组控制块控制B口及C口的低4位。表6-2列出了CPU对8255A端口的寻址和操作控制表4.38255芯片的引脚信号说明续表
2.8255的操作方式1)读/写控制逻辑操作选择表8255的口操作状态2)8255A操作方式
8255A有方式0、方式1、方式2三种操作方式。
(1)方式0(基本1/0方式)
8255A的PA、PB、PC4一PC7、PC0一PC3可分别被定义为方式0输入或方式0输出。方式0输出具有锁存功能,输入没有锁存。方式0适用于无条件传输数据的设备,如读一组开关状态、控制一组指示灯,不使用应答信号,CPU可以随时读出开关状态,随时把一组数据送指示灯显示。图6-15是8255A方式。的输刀输出时序波形图。(2)方式1(应答I/O方式)选通输入输出
PA口、PB口定义为方式1时,PC口的某些位为状态控制线,其余位作I/O线。①方式1输入和时序。若PA口、PB口定义为方式1输入,则8255A的逻辑结构如图6-16所示,相应的状态控制信号的意义如下:/STB:设备的选通信号输入线,低电平有效。/STB的下降沿将端口数据线上信息打入端口锁存器IBF:端口锁存器满标志输出线,IBF和设备相连。IBF为高电平表示设备已将数据打入端口锁存器,但CPU尚未读取。当CPU读取端口数据后,IBF变为低电平,表示端口锁存器空。
INTE:8255A端口内部的中断允许触发器。只有当INTE为高电平时才允许端口中断请求。INTEA、INTEB分别由PC的PC4、PC2位置位/复位控制(见后面8255A控制字)。INTR:中断请求信号线,高电平有效。当/STB、IBF、INTE都为“1”时,INTR就置“1”,/RD的下降沿使它复“0”。8255A方式1的输入时序见图6-17②方式1输出和时序。PA口、PB口定义为方式1输出时的逻辑态如图6-18所示。涉及的状态控制信号的意义如下:/OBF:输出锁存器满状态标志输出线。/OBF为低电平,表示CPU已将数据写入端口,输出数据有效。设备从端口取走数据后发来的回答信号使/OBF升为高电平。/ACK:设备响应信号输入线。/ACK上出现设备送来的负脉冲,表示设备已取走了端口数据。INTE:端口内部的中断允许触发器。INTE为高电平时才允许端口中断请求。INTEA和INTEB分别由PC口PC6位、PC2位置位/复位控制。INTR:中断请求信号输出线,高电平有效。当/ACK、/OBF和INTE都为“1”时,INTR被置“1”,/WR的下降沿使它复“0”。8255A方式1输出的时序波形见图6-19。方式1适用于打印机等具有握手信号的输入/输出设备。2013年10月23日(3)方式2(双向选通方式)方式2是方式1输入和方式1输出的结合。方式2仅对PA口有意义。方式2使PA口成为8位双向三态数据总线口,既可发送数据又可接收数据。PA口方式2工作时,PB口仍可作方式0和方式1I/O口,PC口高5位作状态控制线。图6-20是8255A的PA口方式2时的逻辑组态,其中涉及到的状态控制信号的意义同方式1。图6-21是PA口方式2的时序波形。8255A的工作方式——状态查询方式工作通过读C口的信息,了解状态3.8255A的控制字8255A有两种控制字,即方式控制字和PC口位置位/复位控制字。(1)方式控制字方式控制字控制8255A三个口的工作方式,其格式见图6-22a,方式控制字的特征是最高位为1。
[例6-1]若要使8255A的PA口为方式0输入、PB口为方式1输出、PC4-PC7为输出、PC0-PC3为输入,则应将方式控制字95H(即10010101B)写入8255A控制口。(2)PC口位置位/复位控制字
8255A的PC口输出操作具有位(bit)操作功能,PC口位置位/复位控制字是一种对PC口的位操作命令,直接把PC口的某位置成1或清零。图6-22b是PC口位置位/复位控制字格式,它的特征是最高位为0。
[例6-2]若要使PC口的第2位置1,则应将控制字05H(即00000101B)写入8255A控制口。4.8255A的应用
8255A可以工作在三种工作方式,图6-23是8255A的一种接口逻辑。图中8255A的/RD、/WR分别连MCS-51的/RD、/WR;8255A的D0-D7接MCS-51的P0口;采用线选法寻址8255A,P2.7(A15)接8255的CS,MCS51的最低两位地址线连8255A的端口选择线Al、A0,所以8255A的PA口、PB口、PC口、控制口的地址分别为7FFCH、7FFDH、7FFEH、7FFFH8255A的应用——键盘扫描8255A的应用——LED显示8255初始化就是向控制寄存器写入工作方式控制字和C口置位/复位控制字。例如,对8255各口作如下设置:A口方式0输入,B口方式1输出,C口高位部分为输出,低位部分为输入。设8255的扩展电路控制寄存器的地址为7FFFH。按各口的设置要求,工作方式控制字为10010101B,即95H。所以初始化程序应为:MOVDPTR,#7FFFHMOVA,#95HMOVX@DPTR,A【例1]假设图6-23中8255A的PA口接8只开关,PB口和PC口接16只指示灯,如果要将开关状态读入MCS一51内部RAM40H单元,将MCS-51内部RAM41H、42H的内容送指示灯显示,则8255A的方式控制字为90H(即10010000B)。8255A初始化和输入/输出程序如下:MOVDPTR,#7FFFH;写方式控制字(PA口方式0输入,PB口方式0输出)MOVA,#90HMOVX@DPTR,AMOVDPTR,#7FFCH;将PA口内容读入40H单元MOVXA,@DPTRMOV40H,AINCDPTR;将41H内容输出到PB口MOVA,41HMOVX@DPTR,AINCDPTR;将42H内容输出到PC口MOVA,42HMOVX@DPTR,A【例6-2】图6-24是8255A选通I/0方式接口逻辑。其中8255A的PA口用作选通输入口,PB口用作选通输出口。若图中PB口所接设备为打印机,此打印机每打印完一个字符后会输出“打印完”信号(负脉冲),故8255A可采用方式1工作,CPU可采用中断方式控制打印机打印。如果要把MCS-51内部RAM中30H开始的32个单元的字符输出打印,则可这样编程:
主程序MAIN:MOV8,#30H;RAM首址一1区R0MOV0FH,#20H;长度--.1区R7SETBEA;开中断
SETBEX1;允许外中断,电平触发方式
MOVDPTR,#7FFFH;将8255A的PC2(即INTER)置“1”MOVA,#05HMOVX@DPTR,AMOVA,#0B4H;写方式控制字(PB口方式1输出)
MOVX@DPTR,AMOVDPTR,#7FFDH;从PB口输出第一个数据打印
MOVA,R0HMOVX@DPTR,AINC8;RAM指针加1DEC0FH;长度减1…….;执行其他任务外中断1服务程序:PINT1:PUSHACC;现场保护(A,DPTR等进堆栈)
PUSHDPHPUSHDPLPUSH PSWMOVPSW,#8;当前工作寄存器区切换到1区
MOVA,@R0;从PB口输出下一个数据打印
MOVDPTR,#7FFDHMOVX@DPTR,AINCR0;修改指针、长度
DJNZR7,BACKCLREX1;长度为0,关中断返回
SETS00H;置打印结束标志位BACK:POPPSW;现场恢复(A,DPTR等退栈)
POPDPLPOPDPIIPOPACCRETI
例3
试对图8.23中的8255A编程,使其各口工作于方式0,A口作输入,B口作输出,C口高4位作输出,C口的低4位作输入。由方式选择控制字的格式与定义可确定出满足要求的方式控制字应为91H(10010001B)。对8255A编写程序将91H写入它的控制寄存器,初始化程序为MOVDPTR,#FF7FH;DPTR作地址指针,指向控制口MOVA,91HMOVX@DPTR,A
因为图8.23扩展电路未使用高位地址线,所以端口地址也可使用8位。图8.238255的扩展连接图
例4
试按图8.23扩展电路,写出自8255A的B口输出单片机中R7内容与自8255的A口输入数据到单片机R3的程序。使用8位地址,8255A的A、B、C口及控制口地址分别为7CH、7DH、7EH、7FH。则实现所要求功能的程序为MOVR0,#7FH ;R0作地址指针,指向控制口MOVA,#91HMOVX@R0,A ;方式控制字送控制寄存器MOVR0,#7DH ;R0指向B口MOVA,R7 ;MOVX@R0,A ;R7的内容输出到B口DECR0 ;使R0指向A口MOVXA,@R0 ;从A口输入数据到累加器AMOVR3,A ;把输入数据送存到R3中8255的应用举例1.光二极管显示器的工作原理
LED显示器中的发光二极管共有两种连接方法,一种是共阴极连接,另一种共阳极连接。其连接图如图8.15(b)所示。七段LED显示器
使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。用LED显示器显示16进制数的编码已列在表8-4所示。
为了实现LED显示器的动态扫描除了要给显示器提供段码(字形编码)的输入之外,还要对显示器加位的控制(控制LED显示器亮灭),这就是通常所说的位控和段控。
表LED显示器16进制数编码
2、应用举例具体要求:
l
6个LED采用共阴极连接
l
79H~7EH分别存放6位显示器的显示数据(0~9)
l
8255的A口接LED显示器位控
l
8255的B口接LED显示器段控(1)
电路设计
经分析知:8255的A口、B口、C口、控制寄存器的地址分别为7FFCH、7FFDH、7FFEH、7FFFH。(1)
编写程序
MOVDPTR,#7FFFH
MOVR0,#79H
MOVA,#80H
MOVX@DPTR,A;写控制字
MOVR3,#0FEH
MOVA,R3
LD:MOVDPTR,#7FFCH
MOVX@DPTR,A;最左边灯亮
INCDPTR;指向B口
MOVA,@R0;取显示数据
ADDA,#0CH
MOVCA,@A+PC;查数据编码
MOVX@DPTR,A;写B口
ACALLDELAY;延时
INCR0
MOVA,R3
JNBACC.5,ED
RLA
MOVR3,A
AJMPLD
LEDTAB:DB3FH
DB06H
DB5BH
DB4FH
DB66H
DB6DH
DB7DH
DB07H
DB7FH
DELAY:MOVR7,#02H
MOVR6,#FFH
LOOP:DJNZR6,LOOP
DJNZR7,DELAY
8.4.38155可编程并行I/O口扩展
8155芯片含有256×8位静态RAM,两个可编程的8位I/O口,一个可编程的6位I/O口,一个可编程的14位减法定时器/计数器。8155芯片具有地址锁存功能,与MCS-51单片机接口简单,是单片机应用系统中广泛使用的芯片。
1.8155的结构与引脚8155的逻辑结构如图8.24(a)所示,引脚分布如图8.24(b)所示。图8.248155逻辑结构及引脚(a)8155逻辑结构;(b)8155芯片引脚图
2.8155的RAM和I/O口编址
8155在单片机应用系统中是按外部数据存储器统一编址的,地址为16位,其高8位地址由片选线--CE提供,低8位地址为片内地址。当IO/M=0时,对RAM进行读/写,RAM低8位地址为00H~FFH;当IO/-M=1时,对I/O口进行读/写,I/O口及定时器由AD0~AD3进行寻址。其编址如表4.5所示,范围00H~05H。表4.58155内部端口编址AD7AD6AD5AD4AD3AD2AD1AD0端口×××××000命令状态寄存器(命令/状态口)×××××001PA口×××××010PB口×××××011PC口×××××100定时器低8位×××××101定时器高8位3.8155的工作方式与基本操作
8155的A口、B口可工作于基本I/O方式或选通方式,C口可作为输入/输出口线,也可以作为A口、B口选通方式工作时的状态控制信号线。工作方式选择是通过对8155内部命令寄存器(命令口)设定控制字来实现的。三个口可组合工作于四种方式下。命令字的格式及定义如图所示。图8.258155PC口功能ALTD3D2PC5PC4PC3PC2PC1PC0100IIIIII211OOOOOO301OOOSTB-AbarBF-AINTR-A410STB-BbarBF-BINtr-BSTB-AbarBF-AINTR-A图8.268155选通方式信号逻辑组态
表8-6联络信号C口对A口控制(ALT3)
对A口和B口控制(ALT4)
AINTRAINTRABFABF输出
BINTR输出
BBF输出
8155状态字格式如下:
图8155的状态字4.8155内部的定时器/计数器8155的定时器/计数器是一个14位的减法计数器,由两个8位寄存器构成,如图7.21所示。以其中的低14位组成计数器,剩下的两个高位(,)用于定义计数器输出的信号形式。图8.288155定时器寄存器格式8155的计数器初值不是从0开始,从2开始。这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平。显然,如果计数初值是0或1,就无法产生这种方波。因此8155计数器的写入初值范围是3FFFH~2H。其计数速率取决于输入TI的脉冲频率。最高可达4MHz。8155内有两个寄存器存放操作方式码和计数初值。图8.298155定时器方式及输出波形在写入启动命令后仍可改变定时器工作方式如果写入定时器的计数常数为奇数,输出方波不对称,例如计数常数为9时,定时器输出的方波在5个脉冲周期内为高电平,4个脉冲周期内为低电平,而计数常数为偶数时,方波输出是对称的。因此最小计数长度为2。计数常数在0002H-3FFFH之间选择当用8155内部定时器作为随机事件计数器使用时,若将内部定时器初值记为X0,读取当前定时器计数值记为X1,则随机事件数Y按下式取值:Y=(X0-X1+1)/2的整数部分。使用8155的定时器/计数器时,应先对它的高、低字节寄存器编程,设置操作方式和计数初值n。然后对命令寄存器编程(命令字最高两位为1),启动定时器/计数器计数。通过将命令寄存器的最高两位编程为01或10,可使定时器/计数器立即停止计数或待定时器/计数器溢出时停止计数。5.8155与单片机的扩展连接图8.30用8155的扩展连接例6-58031与8155接口并确定RAM和I/O口地址。图6-28为8155与8031接口的一种方案。电路中8031的P2.7与8155的/CE相连,8031的P2.0与8155的IO//M相连,8031的P0.0-P0.7与8155的AD0-AD7相连。
8155的RAM和1/O地址分配如下。①当P2.7=0,P2.0=0时,选中8155片内RAM,地址是7E00H-7EFFH②当P2.7=0,P2.0=1时,选中I/O口,各口的地址分配如下。
7F00H(命令状态寄存器地址)
7F01H(PA口地址)
7F02H(PB口地址)
7F03H(PC口地址)7F04H(定时器低位地址)
7F05H(定时器高位地址)例6-68031与8155硬件电路如图6-28所示,其内部RAM与I/O操作如下。
①将8155片内RAM的7E30H单元内容读人A累加器中。程序段如下。
MOVR0,#30H:30H→(R0)
MOVP2,#7EH;P2.7,P2.0置零,片选和选中片内RAMMOVXA,@R0;(30H)→A②设A中的数据为5,并写入8155的RAM中7EF0H单元。程序段如下。
MOVDPTR,#7EF0H;指向8155RAM的7EF0H单元
MOVA,#05H;数据送入A累加器
MOVX@DPTR,A;05H-7EF0H单元③将A口定义为基本输入方式,B口定义为基本输出方式,C口定义为输入方式,定时器作为方波发生器对输入脉冲进行24分频(注意8155定时器最高计数频率为4MHz),读PA口数据送PB口输出。则81551/O口初始化程序如下。
MOVDPTR,#7F04H;指向定时器低8位
MOVA,#18H;计数常数18H=24MOVX@DPTR,A;送计数常数INCDPTR;指向定时器高8位
MOVA,#40H;设定时器输出连续方波MOVX@DPTR,A;送定时器高8位
MOVDPTR,#7F00H;指向命令口
MOVA,#0C2H;命令字设为PA口,PC口人,PB口出
MOVX@DPTR,A;并启动定时器
MOVDPTR,#7F01H;指向PA口
MOVXA,@DPTR;读PA口数据
INCDPTR;指向PB口
MOVX@DPTR,A:送PB口输出。在需要扩展RAM和I/O口的MCS-51系统中,选择8155/8156十分经济,8155的256个RAM单元可作数据缓冲器;I/O口可外接打印机,A/D,D/A及作为控制信号的开关量输入输出;定时器可作分频与定时等。在图中连接状态下,8155所占的地址为RAM地址范围:7E00H~7EFFHI/O端口地址:命令/状态口 7F00H PA口 7F01H PB口 7F02H PC口 7F03H
定时器低字节 7F04H
定时器高字节 7F05H
例8
使8155用作I/O口和定时器工作方式,A口定义为基本输入方式,B口为基本输出方式,定时器为方波发生器,对输入脉冲进行24分频(8155中定时器最高计数频率为4MHz),则相应的程序如下:MOVDPTR,#7F04H ;DPTR指向定时器低字节MOVA,#18H ;计数器常数0018H=24MOVX@DPTR,A ;计数常数低8位装入计数器低字节INCDPTR ;使DPTR指向定时器高字节MOVA,#40H(01000000B) ;置定时器方式为连续方波输出MOVX@DPTR,A ;装计数器高字节值MOVDPTR,#7F00H ;使DPTR指向命令/状态口MOVA,#0C2H(11000010B)MOVX@DPTR,A ;向命令/状态口送方式控制字,并启动定时器8155的初始化要求使用8155定时器/计数器对计数脉冲进行千分频,即计数1000后,TIAMEROUT端电平状态发生变化,并重新置数以产生连续方波。此外假定A口为输出方式,允许中断;B口为输入方式,不允许中断;C口为对A口控制方式(ALT3)。请编写初始化程序。解:要求输出连续方波,所以定时器/计数器的最高两位M2M1=01。计数器的其它14位装入计数初值。8155为减法计数,所以计数初值为1000,化为16进制数为03E8H。则定时器/计数器的高8位为:43H,低8位为:0E8H。命令名字的设置如下:
计数器B口A口C口B口A口装入后启动不允许中断允许中断ALT3输入输出11010101
因此,命令字的内容为0D5H。假定命令/状态寄存器的地址为0FDF8H。则初始化程序为:MOVDPTR,#0FDF8H;命令/状态寄存器地址MOVA,#0D5H;命令字MOVX@DPTR,A;装入命令字MOVDPTR,#0FD04H;计数器低8位地址MOVA,#0E8H;低8位计数值MOVX@DPTR,A;写入计数值低8位INCDPTR;计数器高8位地址MOVA,#43H;高8位计数值MOVX@DPTR,A;写入计数值高8位8.5串行扩展原理8.5.1SPI三线总线()2014年12月8日1.SPI三线总线概述(Motorola公司发明)SPI实际上是一种串行总线接口标准。SPI方式可允许同时同步传送和接收8位数据,它工作时传输速率最高可达几十兆位/秒。SPI用以下3个引脚来完成通信:
1)串行数据输出SDO(SerialDataOut)。
2)串行数据输入SDI(SerialDataIn)。
3)串行时钟SCKSerialPeripheralInterface(SerialClock)。另外挂接在SPI总线上的每个从机还需一根片选控制线。SPI是[单主设备(single-master)]通信协议,这意味着总线中的只有一支中心设备能发起通信。当SPI主设备想读/写[从设备]时,它首先拉低[从设备]对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上(脉冲的前沿或后沿),[主设备]把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”,如下图:SPI有四种操作模式——模式0、模式1、模式2和模式3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。每种模式由一对参数刻画,它们称为时钟极(clockpolarity)CPOL与时钟期(clockphase)CPHA。数据输入输出模式由于主设备的SDO连接从设备的SDI,从设备的SDO连接主设备的SDI,从设备SDI接收的数据是主设备的SDO发送过来的,主设备SDI接收的数据是从设备SDO发送过来的,所以主设备这边SPI的模式跟从设备的SDI模式是相同的。2.SPI总线的结构与工作原理
SPI总线有主机、从机的概念。主机的发送与从机的接收相连,主机的接收与从机的发送相连,上图中主机、从机之间SPI总线连接示意图主机产生的时钟信号输出到从机的时钟引脚上,除了以上3根通信线外,一般从机还需一根片选控制线。上图为两台设备采用SPI总线连接的示意图。由于SPI的数据输出线(SDO)和数据输入线(SDI)是分开的,因此允许主机、从机之间发送和接收同时进行,至于数据是否有效,取决于应用软件。当主机发出片选控制信号以后,数据的传输节拍由主机的SCK信号控制。下图为SPI通信的时序图。对具有SPI功能的单片机,时序图中的SDO、SCK和SCK的波形由硬件自动产生,数据的接收也是由硬件自动完成的。主机的ss信号有效后,选中从设备,对于SPI1模式在SCK的上升沿,主机发送数据,SCK的下降沿,主机接收数据。Atypicalhardwaresetupusingtwoshiftregisterstoformaninter-chipcircularbufferTypicalSPIbus:masterandthreeindependentslavesDaisy-chainedSPIbus:masterandcooperativeslaves
TypicalmSPIbus:masterandthreeindependentslavesTheAT25010A/020A/040ASPI总线EEPROM
TheAT25010A/020A/040Aprovides1024/2048/4096bitsofserialelectricallyerasableprogrammableread-onlymemory(EEPROM)organizedas128/256/512wordsof8bitseach.TheAT25080/160/320/640provides8192/16384/32768/65536bitsofserialelectrically-erasableprogrammablereadonlymemory(EEPROM)organizedas1024/2048/4096/8192wordsof8bitseach.地址9位以内的读时序地址大于9位以内的读时序地址9位以内的写时序地址大于9位的写时序3.应用实例图2所示为MCS51系列单片机与存储器X25F008(E2PROM)的硬件连接图,图2中,P1.0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入端(MISO)。下面介绍用MCS51单片机的汇编语言模拟SPI串行输入、串行输出和串行输入/输出的3个子程序1)MCU串行输入子程序SPIIN从X25F008的SPISO线上接收8位数据并放入寄存器R0中的应用子程序如下.SI线的数据输入进行采样,并在SCK的上升沿被锁存.输出数据在SCK的下降沿SO线:SPIIN:SETBP1.1;使P1.1(时钟)输出为1CLRP1.2;选择从机MOVR1,#08H;置循环次数SPIIN1:CLRP1.1;使P1.1(时钟)输出为0NOP;延时NOPMOVC,P1.3;从机输出SPISO送进位CRLCA;左移至累加器ACCSETBP1.1;使P1.0(时钟)输出为1DJNZR1,SPIIN1;判断是否循环8次(8位数据)MOVR0,A;8位数据送R0RET2)MCU串行输出子程序SPIOUT将MCS51单片机中R0寄存器的内容传送到X25F008的SPISI线上的程序如下:SPIOUT:SETBP1.1;使P1.1(时钟)输出为1CLRP1.2;选择从机MOVR1,#08H;置循环次数MOVA,R0;8位数据送累加器ACCSPIOUT1:CLRP1.1;使P1.1(时钟)输出为0NOP;延时NOPRLCA;左移至累加器ACC最高位至CMOVP1.0,C;进位C送从机输入SPISI线上SETBP1.1;使P1.1(时钟)输出为1DJNZR1,SPIOUT1;判是否循环8次(8位数据)RET3)MCU串行输入/输出子程序SPIIO将MCS51单片机R0寄存器的内容传送到X25F008的SPISI中,同时从X25F008的SPISO接收8位数据的程序如下(SI线对数据输入进行采样,并在SCK的上升沿被锁存.输出数据在SCK的下降沿由SO线输出):SPIIO:SETBP1.1;使P1.1(时钟)输出为1CLRP1.2;选择从机MOVR1,#08H;置循环次数MOVA,R0;8位数据送累加器ACCSPIIO1:CLRP1.1;使P1.1(时钟)输出为0NOP;延时NOPMOVC,P1.3;从机输出SPISO送进位CRLCA;左移至累加器ACC最高位至CMOVP1.0,C;进位C送从机输入SETBP1.1;使P1.1(时钟)输出为1DJNZR1,SPIIO1;判断是否循环8次(8位数据)RET8.5.2I2C双总线(Inter-IntegratedCircuit)1.I2C总线概述(由PHILIPS公司开发的两线式串行总线)I2C也是一种串行总线的外设接口,它采用同步方式串行接收或发送信息,两个设备在同一个时钟下工作。与SPI不同的是I2C只用两根线:
1)串行数据SDA(SerialData)。
2)串行时钟SCL(SerialClock)。由于I2C只有一根数据线,因此其发送信息和接收信息不能同时进行。信息的发送和接收只能分时进行。I2C串行总线工作时传输速率最高可达400Kbit/s典型I2C™互连框图2.I2C的结构与工作原理
I2C总线上所有器件的SDA线并接在一起,所有器件的SCL线并接在一起,且SDA线和SCL线必须通过上拉电阻连接到正电源。。
I2C总线的数据传输协议要比SPI总线复杂一些,因为I2C总线器件没有片选控制线,所以I2C总线数据传输的开始必须由主器件产生通信的开始条件(SCL高电平时,SDA产生负跳变);通信结束时,由主器件产生通信的结束条件(SCL高电平时,SDA产生正跳变)。SDA线上的数据在SCL高电平期间必须保持稳定,否则会被误认为开始条件或结束条件,只有在SCL低电平期间才能改变SDA线上的数据。起始和停止条件
SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件;
SCL线是高电平时,SDA线由低电平向高电平切换,这个情况表示停止条件。字节格式发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续字节格式基本工作原理:
以启动信号START
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户需求分析以及产品功能设计支持手册针对天翼终端
- 护理职业发展:规划与提升
- 旅游平台技术人才招聘与面试要点指南
- 医疗护理员患者安全防护
- 激光雷达与视觉传感器融合技术探讨
- 线上线下一体化文旅服务体系构建方案
- 零售业门店经理面试技巧
- DB35-T 2307-2026 海峡两岸共通 室内烟火特性训练技术培训服务规范
- 护理心理学与心理健康的干预
- 就业指导师生互动
- 电子商务数据分析高职全套教学课件
- 绿地认养协议书
- 英汉互译单词练习打印纸
- DB52-T 1685-2022 电动汽车充电站(桩)防雷技术规范
- DB4403-T 238-2022 酒店式公寓经营服务规范
- 大学转学申请书大学转学申请表电子版(十三篇)
- 向日葵病虫害虫害图片
- 《安全运动促健康》课件
- 日管控、周排查、月调度记录表
- GB/T 5752-2013输送带标志
- GB/T 3146.1-2010工业芳烃及相关物料馏程的测定第1部分:蒸馏法
评论
0/150
提交评论