存储器与IO接口_第1页
存储器与IO接口_第2页
存储器与IO接口_第3页
存储器与IO接口_第4页
存储器与IO接口_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1存储器与IO接口5.1存储器的扩展系统扩展是单片机硬件设计中遇到的问题。主要解决在用单片机为核心构成一个工业测控系统时,要输入大量经传感器送入的信号,输出执行与报警控制信号,以及人——机对话等都需要很多接口,由于单片机自身常满足不了要求,外部扩展成为必要。

单片机扩展到什么程度,取决于应用的要求,不同的应用有不同的扩展规模。扩展包括:EPROM和RAM;并行、串行I/O接口;定时/计数器扩展;中断系统扩展;键盘显示器及其它功能接口扩展。第2页/共71页第1页/共71页5.1.1单片机扩展总线

单片机引脚构成的外部扩展三总线结构如图5-1所示。所有的外部接口芯片都是通过这三组总线进行扩展的。

第3页/共71页第2页/共71页用于单片机地址锁存器有两类芯片:一类是8D触发器,如74LS273;另一类是8位锁存器,如74LS373、8282等。

由P0、P2口构成的16位地址总线。在片外可扩展的存储器地址范围是0000H~FFFFH。由于片外RAM和EPROM使用不同的操作指令和控制信号,允许RAM和EPROM的地址重叠,故8031单片机对外可扩展的RAM和EPROM分别为64K和60K(内部有4K)。其中,在需要扩展的外部I/O接口应与片外RAM统一编址,用MOVX指令作I/O口输入、输出指令。第4页/共71页第3页/共71页5.1.2地址锁存器

凡具有输入、输出控制功能的寄存器均可作为地址锁存器。常用的有74LS373、8282或74LS273。选择不同的地址锁存器与单片机的连接方法也不同。图5-2给出了74LS373的引脚图及原理结构。第5页/共71页第4页/共71页由图5-2中(a)可知:(1)1D~8D为数据输入端(P0口);1Q~8Q为数据输出端(地址总线低8位输出)。

(2)

OE:三态门控制端。OE=0时,允许Q端输出;/OE=1时,三态门关闭,输出Q对外呈高阻状态。作为地址锁存器时,OE=0(接地),三态门一直开通,用户只控制锁存器G端。

(3)G:锁存允许控制端。接单片机的ALE(地址锁存)信号。当G端输入1时,输入1D~8D和输出1Q~8Q状态相同;当G端从1返回到0时,1D~8D上的数据被锁存,此时锁存器的输入端是高阻状态,输出端为锁存输入的地址数据。74LS373控制功能如表5-1所示。第6页/共71页第5页/共71页表5-174LS373控制功能

控制端输入、输出三态门输出控制OE锁存允许控制G输入数据D输出数据Q0111010000X(无关)Q1X(无关)X(无关)高阻态第7页/共71页第6页/共71页图5-3是分别使用74LS373、8282和74LS273等锁存器作为单片机P0口低8位地址锁存器的连接方法。第8页/共71页第7页/共71页由图5-3可知:8282的锁存控制端STB和74LS373的G端逻辑功能相同,可直接与单扯机的ALE端相连,在ALE下降沿进行地址锁存。而74LS273的锁存控制端CLK则是在上升沿锁存有效,因此ALE输出的锁存控制有效信号必须加反相器后再连接到CLK端,同时74LS273的三态门控制端CLR加高电平1才有效。8051、8751、89C51、89C52片内具有4K或8KEPROM的单片机,一般来说是够用的。如果不够,可以考虑外部EPROM的扩展。扩展方法与数据存储器RAM的扩展方法相似,本书省略不讲。第9页/共71页第8页/共71页5.1.3串行存储器E2PROM的扩展

51系列单片机内部有128个字节的RAM单元。但是在实时数据采集系统中,仅靠片内128个字节RAM不够用,需要外扩存储器。常用数据存储器有RAM和ROM两种,这里我们只讨论串行E2PROM-93C46与8051单片机的接口(常用扩展方式)。93C46是64×16(1024)位串行存储的电擦除可编程的只读存储器。第10页/共71页第9页/共71页

1.93C46的特点(1)在线改写数据和自动擦除功能;(2)电源关闭,数据也不会丢失;(3)输入、输出口与TTL兼容;(4)片内有编程电压发生器,可以产生擦除和写入操作时所需的电压;(5)片内有控制和定时发生器,擦除和写入操作由此定时电路自动控制;(6)具有整体编程允许和截止功能,以增强数据的保护能力;(7)单5V电源供电;(8)在等待状态时,电流为1.5~3mA。第11页/共71页第10页/共71页2.93C46的封装形式和引脚功能93C46有两种封装形式,如图5-4所示。其中(a)为8脚双排直列式塑料封装;(b)为14脚扁平式塑料封装。

第12页/共71页第11页/共71页其引脚功能为(SPI标准):CS:片选信号。当CS置高电平时,片选有效。用CS信号的下降沿启动片内定时器,开始擦写操作。启动之后,CS信号上电平的高低不影响芯片内部的擦写操作。CLK:串行数据时钟信号输入端。输入时钟频率为0~250kHz。DI:串行数据输入端。DO:串行数据输出端(读操作时)。擦除操作时,DO可作为擦写状态指示,相当于忙/闲信号。其他状态时,DO呈高阻状态。ORG:结构端。当ORG连接到VCC或悬空时,93C46为16位存储器结构;当ORG连接到VSS时,为8位存储器结构。需要注意的是,在时钟频率低于1MHz时,ORG端才能悬空。NC:未用端。第13页/共71页第12页/共71页3.93C46的指令系统93C46共有8条指令,指令格式如表5-2所示。

表5-293C46的指令表(ORG=0,93C46为8位存储器)指令起始位操作代码地址数据说明DIDO读110A5A4A3A2A1A0-D7~D0读地址A7~A0写101A5A4A3A2A1A0D7~D0RDY/BSY写地址A7~A0擦除111A5A4A3A2A1A0RDY/BSY擦除地址A7~A0擦写允许10011××××高阻擦写禁止10000××××高阻片写10010××××D7~D0RDY/BSY片擦除10001××××RDY/BSY第14页/共71页第13页/共71页

①起始位(第8位)总为1,作为控制指令的开始。接下来的②操作代码(2位),③地址码(6位)。向93C46写入控制命令,便可进行相应操作。93C46在SPI系统中作为从器件。其DI引脚用于接收以串行格式发来的命令、地址和数据信息,这些信息的每一位都在CLK的上升沿读入93C46。无论93C46进行什么操作,必须首先将CS置高电平(选中),接着在时钟同步下,把9位串行指令依次写入片内。在未完成这条指令所必须的操作之前,芯片拒绝接收新的指令。在不对芯片操作时,最好将CS置为高电平,使芯片处于等待状态,以降低功耗。第15页/共71页第14页/共71页(1)读指令-READ该指令的功能是将数据从93C46的单元中读出来,机器码“101A5A4A3A2A1A0”,其中A5A4A3A2A1A0是所要读取单元的地址。93C46接收到该指令之后,在DO引脚先输出一个低电平“虚拟”读脉冲之后(可作为联络信号),从时钟CLK的上升沿开始,DO引脚连续输出16位串行数据。若CS继续保持为高电平,将自动地周期性地输出93C46的下一个地址单元的数据。时序如图5-5所示。第16页/共71页第15页/共71页

图5-5读指令的时序第17页/共71页第16页/共71页(2)写指令-WRITE

该指令的功能是向93C46的指定单元写入数据,机器码是“110A5A4A3A2A1A0D15~D0”。

指令中,在指定单元的地址之后,紧接着是所要写入的16位数据。在最后一个数据位加在DI引脚后,CLK的下一个上升沿以前,CS必须为低。CS的下降沿将启动自定时自动擦除和编程周期。在CS为低电平大约250ns之后,恢复为高电平,同时DO引脚的状态表示器件的忙/闲。DO引脚为低时,表示编程仍在进行;DO引脚为高时,表示数据已经写入到指定单元中,并且93C46已作好接受下一条指令的准备。第18页/共71页第17页/共71页(3)擦除指令-ERASE该指令的功能是将指定单元的内容擦除,既强迫该单元的所有位为逻辑“1”状态。机器码是“110A5A4A3A2A1A0”。在93C46装载完最后的地址位以后,CS为低电平。CS的下降沿将启动自定时编程周期。在CS为低电平大约250ns之后,恢复为高电平,同时DO引脚的状态表示器件的忙/闲。DO引脚为低时,表示编程仍在进行;DO引脚为高时,表示指定单元已被擦除,并且93C46已作好接受下一条指令的准备。第19页/共71页第18页/共71页(4)擦除整个存储器指令-ERAL该指令的功能是将整个存储器阵列强迫为逻辑“1”状态,

除操作码不同之外,ERAL与ERASE指令周期相同。(5)写整个存储器指令-WRAL该指令的功能是将指令中指定的数据写入整个存储器阵列中,除操作码不同之外,WRAL与WRITE指令周期相同第20页/共71页第19页/共71页(6)擦/写允许指令-EWEN擦/写禁止指令-EWDS擦/写允许指令的功能是使芯片处于允许擦/写状态。一旦EWEN指令执行,允许对93C46进行编程直到执行了EWDS指令或者是关闭了电源。擦/写禁止指令的功能是禁止对芯片的所有擦除和写入操作,包括整个芯片和单个单元的擦除和写入。通常在上电后,芯片就处于EWDS状态。一般在所有的编程操作完成之后,执行EWDS指令,禁止所有的擦/写操作,以防止偶然的数据干扰。此外,读指令(READ)的执行与EWEN与EWDS指令无关。

第21页/共71页第20页/共71页

1.93C46与80C51单片机的接口与编程(1)接口93C46与80C51的接口电路如图5-6所示。

第22页/共71页第21页/共71页图中,80C51工作在串行口方式0(同步移位寄存器输入/输出方式),它的TXD引脚连接93C46的CLK,为93C46提供时钟信号,RXD引脚作为双向串行口送出命令和读入数据。其中,TXD信号必须反向,以适应EEPROM的时序需要;93C46的DI、DO引脚须通过与门和一个三态门与80C51的RXD与P1.0引脚相连,以使其能在它们之间进行双向传递数据。P1.1脚连93C46的CS,作为片选信号。P1.0作为93C46的读/写控制信号,当P1.0=1时,对93C46进行写操作;当P1.0=0时,80C51读入数据。第23页/共71页第22页/共71页(2)编程除起始位和“虚拟”数据位之外,同步串行口(串行口方式0)自动进行操作码、地址和数据的传送。送起始位子程序(附加位):此时,P1.0和P1.1作为输出,P1.0=1时选通93C46,P1.1=1时将指令写入93C46。P3.0和P3.1作为标准的I/O输出口线。第24页/共71页第23页/共71页INSB:

CLRP1.1;置片选无效

SETBP1.0;为P3.0接通DI作准备

SETBP3.0;置位DI

NOP

NOP

SETBP1.1;选中93C46

NOP

NOP

SETBP3.1;时钟置高

NOP

NOP

CLRP3.1;时钟置低

RET第25页/共71页第24页/共71页数据子程序:

READ_DATA:MOVSCON,#00H;设置串行口为方式0

ACALLINSB;送起始位

MOVA,#10001111B;送命令和地址,即送读指令

MOVSBUF,AJNBTI,$

;等待发送完毕

CLRTIMOVR0,#BUF;指向数据缓冲区

CLRP1.0;准备读入数据

JNBRI,$

;等待接收数据

CLRRIMOV﹫R0,SBUFINCR0MOV﹫R0,SBUFCLRP1.1;置片选无效

NOPNOPSETBP1.1;置片选有效RET第26页/共71页第25页/共71页5.2并行I/O接口的扩展

在51系列单片机中,提供给用户的I/O线只有P1口和P3口的某些位线可作为输入、输出口线使用。因此,在应用中需要扩展如并行I/O、定时器等外部接口。一个并行接口可以设定为:输入、输出或双向接口。一个典型并行接口一般结构如图5-7所示。由图5-7可以看到,并行口用一个通道和输入设备相连,用另一个通道和输出设备相连。每个通道都配有一定的控制线和状态线,沟通接口与外界的联络。并行接口应该有一个控制寄存器用来存放CPU对它写入的控制命令,一个状态寄存器提供CPU查询。为了实现输入和输出,接口中要有输入、输出缓冲寄存器。接口和CPU之间的联系采用查询或中断方式。本节介绍两种芯片:8255A和8155并行接口。

第27页/共71页第26页/共71页第28页/共71页第27页/共71页5.2.18255A可编程并行I/O接口

8255A具有三个8位并行I/O口,称为PA口、PB口和PC口。其中PC口又分为高4位和低4位口,通过控制字设定可以选择三种工作方式:(1)基本输入/输出;(2)选通输入/输出;(3)PA口为双向总线。8255A与单片机和外设连接时,由不同的初始化编程可用于无条件传送,查询或中断传送,以完成单片机和外设的信息交换。第29页/共71页第28页/共71页11.

8255A的内部编程结构8255A内部如图5-8所示。

第30页/共71页第29页/共71页8255A三个8位并行数据端口都有自己各自的特点。A口:具有一个8位数据输出锁存/缓冲器和一个数据输入锁存器。在数据输入或输出时,数据均受到锁存。可对PA7~PA0设定为三种工作方式:8位输入、输出或双向。B口:具有一个8位数据输出锁存/缓冲器和一个数据输入缓冲器。可编程为两种工作方式:8位输入或输出。C口:除了单独作为8位输入、输出口使用外,还可以按控制命令被分成两个4位端使用,分别作为A口和B口输出控制信号和输入状态信号。A组控制和B组控制:这两组控制电路由工作方式控制字来设定两组端口的工作方式和读/写操作。A组的控制电路管理A口和C口的高5位(PC7~PC3)的工作方式和读/写操作。B组的控制电路管理B口和C口的低3位(PC2~PC0)的工作方式和读/写操作。

第31页/共71页第30页/共71页2.8255A芯片引脚功能8255A为双列直插式40条引脚,除了电源VCC和地GND以外,其它引脚信号可分为两组。(1)和外部设备一边相连接的:PA7~PA0为A组数据信号线;PB7~PB0为B组数据信号线。上述二组线根据用户选择8255A工作方式与外部设备的对应端连接。(2)和单片机一边相连接的:D7~D0为8255A双向数据总线;CS为片选端,低电平有效;RD和WR为读/写有效控制端。当CS=0时,RD和WR才能对8255A有效。第32页/共71页第31页/共71页A1、A0为端口地址选择端,确定8255A内部3个数据口和一个控制寄存器地址。如下所示:A1 A2 选中端口地址00 ——

A端口01 ——

B端口1 0 ——

C端口1 1 ——

控制寄存器地址RESET——复位端,高电平有效。当RESET=1时8255A复位,内部控制寄存器被清除。所有端口被设定为输入。在上述控制引脚中:CS、A1、A0可决定8255A的4个端口寄存器地址。RD、WR可以决定CPU对8255A的读/写操作方式选择。

第33页/共71页第32页/共71页3.8255A的三种工作方式用户可以通过CPU对8255A方式控制字的设定来选择三种不同的工作方式。这三种方式硬件示意图如图5-9所示。

第34页/共71页第33页/共71页(1)方式0:基本输入/输出方式这种方式不需要选通信号。PA、PB和PC中任何一个端口都可以通过方式控制字设定为输入或输出。用于无条件数据传送或查询方式传送数据。(2)方式1:选通输入/输出方式三个口被分成两组。A组包括A口和PC7~PC3,A口可由编程设定为输入或输出口;PC7~PC4作为输入/输出操作的选通信号和应答信号。B组包括B口和PC3~PC0这时C口作为8255A和外设之间或CPU之间传送某些状态信息及中断请求信号。这些联络信号与C口的数位之间有着固定关系,不是由用户设定的。第35页/共71页第34页/共71页((1)

方式2:双向传送方式只有A口可以选择方式2。此时,A口为8位双向传送数据口,C口的高5位PC7~PC3用来作为指定的A口输入/输出的控制联络线。如果一个并行外设既可作为输入又可作为输出设备,那么,将这个外设和8255A的A口相连并工作在方式2是合适的。A口工作在方式2时,B口可作为方式0或者方式1工作,PC2~PC0用作I/O线。C口在设定为方式1或2时,各引脚分配的固定功能如表5-3所示。表5-3中I/O表示C口末用的这些线可以设定为一般的输入/输出线使用。表中各联络线用于输入时含义如下:(1)STB(Strobe)——选通信号输入端,低电平有效。它由外设输入,当STB=0时,8255A接收外设送来的8位数据。(2)IBF(InputBufferFull)——输入缓冲器满,高电平有效。当IBF=1时,表示当前有一个新数据在输入缓冲器中,可作为状态信号,供CPU查询用。第36页/共71页第35页/共71页(3)INTR(InterruptRequest)——它是8255A送往CPU的中断请求信号,高电平有效。在STB=IBF=1时,INTR=1。也就是说,当选通信号STB结束,已将一个数据送入输入缓冲器中,并且输入缓冲器满信号IBF已经为高电平时,8255A会向CPU发出中断请求信号INTR=1。在CPU响应中断后读取缓冲器的数据时,由单片机RD的下降沿将INTR降为0,使IBF无效,通知外设再一次输入数据。第37页/共71页第36页/共71页表5-38255A的C口联络控制信号线

C口的位方式1(A口、B口)方式2(仅用于A口)输入输出输入输出PC0INTRBINTRBI/OI/OPC1IBFBOBFBI/OI/OPC2STBBACKBI/OI/OPC3INTRAINTRAINTRAINTRAPC4STBAI/OSTBA×PC5IBFAI/OIBFA×PC6I/OACKA×ACKAPC7I/OOBFA×

OBFA第38页/共71页第37页/共71页表5-3中用于输出联络信号含义:(1)ACK(Acknowledge)——外设响应输入信号,低电平有效。它是由外设送给8255A的,当ACK=0时,表明外设已经取走并且处理完CPU通过8255A输出的数据。(2)OBF(OutputBufferFull)——输出缓冲器满,低电平有效。这是8255A送给外设的一个控制信号,当/OBF=0时,表示CPU已经把数据写入8255A指定的端口,通知外设可以把数据取走。(3)INTR——中断请求信号,高电平有效。当外设已经接收了CPU通过8255A输出的数据后,INTR=1向CPU申请中断,要求CPU继续输出数据,CPU在中断程序中把数据写入8255A,写入后使OBF有效,启动外设工作。

第39页/共71页第38页/共71页4.8255A的控制字8255A共2个控制字。选择工作方式或对C口控制。(1)工作方式选择控制字8255A的三个端口工作在什么方式,是输入还是输出,都是由工作方式控制字设定。控制字格式如图5-10所示。在图5-10中:D2~D0控制B口和PC7~PC4;D6~D3控制A口和PC7~PC4。另外,在用户选择方式1或2时,对C口的定义无论是输入还是输出方式都不影响C口作为控制联络线使用的各位功能,但末用于控制联络线的各位,仍用D0、D3定义。

第40页/共71页第39页/共71页(2)端口C置1/置0控制字由于C口常作为联络控制位使用,应使C口各位可以用置1/置0控制字来单独设置,以实现用户要求的控制功能。格式如图5-11所示。在图5-11中,对C口的某一位PCi进行置1或置0操作由D0设定,选择C口的哪一位进行操作则是由D3D2D1来选择,每次设定只能对C口的一位置1或清0。D7=0是这个控制字的特征位,CPU靠这个位来区别共用一个地址(A1A0=11)的两个字。第41页/共71页第40页/共71页对8255A进行初始化程序设计。例如:要求A口工作在方式0,输入;B口为方式1,输出;C口高4位PC7~PC4为输入;C口低4位PC3~PC0为输出。则由图5-10所得8255A对应的工作方式选择控制字为:10011100B=9CH。实现上述要求的初始化程序为:MOV R1,#03H ;03H为8255A控制寄存器地址MOV A,#9CH ;8255A工作方式字为9CHMOVX @R1,A ;(R1)←A,方式字送入8255A控制口

第42页/共71页第41页/共71页第43页/共71页第42页/共71页第44页/共71页第43页/共71页

5.8255A和8031单片机的硬件接口8031与8255A的硬件接口电路如图5-12所示。在图5-12中连接的A1、A0和/CS线,按表5-3关系。8255AA、B、C口和控制寄存器地址依次为00H、01H、02H和03H。8255A的C口具有位操作功能,把一个置1置0控制字送入8255A的控制口,就能把C口的某一位置1或清0而不影响其它位的状态。这个功能主要用于控制。如果用户需要将C口的PC3位置1,而将PC5置0,则需要分两次写入置1/置0控制字。由图5-12可知,将PC3置1的控制字为00000111B=07H;将PC5置0的控制字为00001010B=0AH。根据图5-21的电路,可编程如下:

第45页/共71页第44页/共71页MOVR0,#03H ;R0←03H,8255A控制口地址MOV A,#07H ;A←07H,将PC3置1控制字MOVX@R0,A ;(03H)←07h,送控制字,置PC3=1MOV A,#0AH ;A←0AH,将PC5置0控制字MOVX@R0,A ;(03H)←0AH,送控制字,置PC5=0在8255AC口的PC3置1和置0控制中,第二次写入的0AH置PC5=0的操作不影响第一次写入的置PC3=1的状态。第46页/共71页第45页/共71页8255A在单片机应用系统中用于连接外部设备。如打印机、键盘、显示器以及作为控制、状态输入输出口。

第47页/共71页第46页/共71页5.2.28155可编程并行I/O接口可编程并行I/O接口8155提供:

①两个8位并行口A、B和6位并行口C;

②256个字节的静态RAM

③一个14位减1定时器/计数器,

可直接与单片机连接(内部设有地址锁存器)8155芯片的编程结构8155片内结构如图5-13所示。

第48页/共71页第47页/共71页图5-138155内编程结构

第49页/共71页第48页/共71页在图5-13中,8155片内功能可分为4部分:

(1)A口和B口为一般的8位并行I/O口,可设定为8位并行输入或输出。C口只有6位,它有两个作用。一是设定为普通并行I/O口;另一种是设定为控制状态口使用,PC2~PC0作为A口的控制信号,PC5~PC3作为B口的控制信号使用。

(2)片内256个字节RAM,CPU对其操作、使用相当于8031外扩的256个单元的RAM,地址为00H~FFH。

(3)片内14位计数器可对引脚TIMEIN输入脉冲进行减法计数,当由某一初值减为终值时,在TIMEOUT端输出事先规定的方波或脉冲。初值在0002H~3FFFH之间。可作为外部事件计数器、定时器和分频器使用。

第50页/共71页第49页/共71页

(4)片内有一个工作方式寄存器,用来设定A、B和C口的工作方式等。另一个是状态寄存器,用来锁存A、B和定时器当前的状态,供CPU查询用。应注意:两个寄存器共用一个地址。CPU用指令写入的是工作方式字,而读出的是状态字。另外,8155内部有一个10位锁存器,用来锁存地址及控制信号。因此,从8031P0口送至8155的地址就不用再加地址锁存器了。

第51页/共71页第50页/共71页2.8155的引脚功能及地址编码。8155是40条引脚的芯片。下面分别介绍。(1)8155和CPU连接的引脚AD7~AD0——地址/数据分时复用线。单片机和8155之间的地址、数据、命令和状态信息都通过这8位总线传送的。A2~A0决定8155内I/O口等6个地址选择。IO/M——8155片内I/O和RAM选择线。当IO/M=0时,AD7~AD0线上为8155内RAM地址,CPU对其RAM进行读、写操作;当IO/M=1时,AD7~AD0线上为8155I/O口地址。CE——片选端,低电平有效。ALE——锁存有效输入信号线。用来锁存AD7~AD0低8位地址及IO/M、CE状态。RESET——复位线,高电平有效。复位后,8155设定为输入方式。RD、WR——读、写输入线。第52页/共71页第51页/共71页8155的RAM和I/O口地址为16位,高8位由P2口控制CE和IO/M,低8位由P0口连接AD7~AD0确定。若用P2.7连接CE,P2.0连接IO/M,未用的P2.6~P2.1取全0,则8031单片机对8155的地址编码如表5-4所示。表5-48155I/O口地址编码P27...P20P07...P03P02P01P00I/O地趾选择I/O口0...1

0...00000100H控制寄存器0...1

0...00010101HA口0...1

0...00100102HB口0...1

0...00110103HC口0...1

0...01000104H定时器低8位0...1

0...01010105H定时器高8位第53页/共71页第52页/共71页(2)8155与外部设备连接的引脚PA7~PA0——A口I/O线,可设定为输入或输出。PB7~PB0——B口I/O线,可设定为输入或输出。PC5~PC0——C口6位通用I/O线。或作为A口和B口的控制信号线使用,其中:高3位PC5~PC3为B口服务,低3位为A口服务。3.8155工作方式(1)作为256个字节外部RAM这种工作状态要求IO/M=0,这时8155只能作为单片机外部RAM使用,地址为0000H~00FFH,CPU用MOVX指令对其进行读/写操作。(2)8155扩展为I/O口使用这种工作方式要求

IO/M=1,再由工作方式控制字来选择8155I/O口的基本输入、输出工作方式。第54页/共71页第53页/共71页4.8155的命令/状态控制字若对8155片内I/O口或定时器进行操作,必须向工作方式控制寄存器写入一个初始化命令字。8155的工作方式控制字格式如图5-14所示。在图5-14中:D3~D0规定A、B、C口的工作方式。当C口作为控制口时D4、D5设定A口和B口的中断允许或禁止。最高两位D7D6控制定时器操作方式的解释如下:

第55页/共71页第54页/共71页D7D6=00——无操作;此命令不影响原先的计数方式。只有当用户仅要改变A、B、C口的工作方式而不需要改变定时器原先规定的操作方式时使用此命令。D7D6=01——停止计数:若计数器尚未启动,则不操作,维持原状态。若计数器正在运行计数时,此命令输入后,计数器立即停止计数工作。D7D6=10——计满后停止:若计数器正在计数,当由计数初值减至终值时停止计数。若此命令输入时计数器未起动,则计数器无操作。D7D6=11——开始计数:若计数器原先没有工作,则在CPU装入计数初值和此命令后立即启动工作。若计数器正在运行计数,则在CPU输入新的计数初值和此命令后,计数器仍按原规定方式工作,直到计数器减至终值后,才按新的规定方式和计数初值工作。

第56页/共71页第55页/共71页图中ALT1(A、B口基本I/O,C口输入)、ALT2(A、B口基本I/O,C口输出)方式使用较多,另两种方式可查有关资料。应注意:8155命令字和状态字用的是同一个地址。因此,工作方式控制字只能写入、不能读出查询。若用户一定要用CPU读出,则读出的不是工作方式字而是状态字。第57页/共71页第56页/共71页例如:若用户要求8155的A口为基本输入口,B口为基本输出口、C口为输入口,并立即停止计数器工作。由图5-14可知,8155工作在ALT1,方式字的各控制位:0100001042H停止

禁止中断

ALT1B口输出

A口输入工作方式控制字为42H,控制口地址为0100H,则CPU写入8155片内的初始化程序为:MOVDPTR,#0100H;控制寄存器地址MOVA,#42H;方式控制字8155工作在ALT1MOVX@DPTR,A;控制字写入8155中CPU执行上述程序后,使8155的IO/M=1,CE=0,地址线低8位A7~A0=00H,而后数据线D7~D0=42H。第58页/共71页第57页/共71页5.8155与8031的硬件接口及初始化编程由于8155内部有10位地址锁存器,由ALE信号锁存。因此8155的

AD7~AD0与8031的P0.7~P0.0直接相连,其余各输入、输出控制、都和8031的同名端相连即可。而IO/M和CE端可用P2的两位控制。根据表5-4地址编码,可得8155和8031单片机硬件接口电路如图5-15所示。第59页/共71页第58页/共71页图5-158155与8031硬件接口第60页/共71页第59页/共71页用户对8155的A、B、C口先用方式控制字确定这三个口的工作方式,若规定工作在基本的I/O状态,然后用MOVX指令对这三个口进行输入或输出操作。

例如:设定8155工作在基本I/O口ALT1方式,A口输入,B口输出,C口输入。要求将A口输入的数据送进8155片内的RAM的0000H单元中,将00FFH单元数据从B口输出。试设定工作方式控制字及编写程序。解:根据要求,由图5-14得控制字为00000010B=02H。完成要求功能的程序为:

第61页/共71页第60页/共71页MOVDPTR,#0100H;8155控制口地址为0100HMOVA,#02H

;8155设定为ALT1工作控制MOVX@DPTR,A;向8155输出控制字MOVDPTR,#0101H;设定8155A口地址为0101HMOVXA,@DPTR;读8155A口数据MOVDPTR,#0000H;8155片内RAM首地址MOVX@DPTR,A;将A口数据送入8155内RAM单元MOVDPTR,#00FFH;8155内RAM地址00FFHMOVXA,@DPTR;读8155内RAM的00FFH单元数据MOVDPTR,#0102H;设定8155B口地址为0102HMOVX@DPTR,A;将8155内RAM数据从B口输出第62页/共71页第61页/共71页6.8155片内定时器的应用8155片内有一个14位减法计数器,可以对从TIN引脚输入的脉冲进行减1计数,当计满时从TOUT端输出按预先设定的方波或脉冲。对定时器的管理分两级控制。第一级由写入工作方式控制字D7D6位来确定定时器的启动、停止或装入计数初值后再启动。第二级是定时器高8位中的D7D6(M1M0)是用来决定TOUT引脚输出脉冲的4种不同方式。余下的14位计数器初值是0002H~3FFFH之间的任意值。定时器本身占用两个8位寄存器地址:若A2A1A0=100为定时器低8位地址选中;A2A1A0=101为定时器高8位地址选中,见表5-4所示。定时器的格式如图5-16所示。第63页/共71页第62页/共71页图5-16中所谓输出方波(以计数初值是8为例),指的是从起动计数器开始工作,在前半个周期计数4则TOUT端输出高电平,后半个周期计数4输出为低电平。如果写入定时器的计数初值为奇数,则在TOUT端输出方波不对称。前半个周期高电平要比后半个周期低电平多一个数时间,这也是计数初值最小是2的原因。8155定时器TOUT端输出方式及相应的波形关系如图5-17所示。第64页/共71页第63页/共71页第65页/共71页第64页/共71页第66页/共71页第65页/共71页例如:使8155作为I/O口和定时器使用。为基本I/O口ALT2方式。A、B、C口均设定为输出方式;定时器作为连续方波发生器使用,对输入TIN端的脉冲进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论