书城工业技术智能仪器设计基础
19100400000005

第5章 微机系统设计(2)

2.4.1.2A组和B组控制电路

包括控制字寄存器及控制逻辑电路。它接受CPU输出的控制字,决定两组的工作方式。这两组是:

A组——端口A和端口C的高四位(PC7~PC4);

B组——端口B和端口C的低四位(PC3~PC0),该电路还可根据控制字对端口C的每一位实现置位或复位。

2.4.1.3数据总线缓冲器

一个三态的双向8位缓冲器将8255A内部数据总线与系统数据总线连接起来,在系统读、写控制信号及地址译码逻辑作用下,实现CPU与各端口之间的信息传送。

2.4.1.4读/写控制逻辑及其接口信号

它与CPU的地址总线及某些控制线相连,实现CPU与8255A中四个端口之间的读、写操作。在它的控制下,可以写入控制字、输出数据和控制信号;可以把外设的数据、状态输入到CPU。

接口信息定义为:

CS(片选)——通常来自地址译码器,低电平时表明该8255A被选中;

RD(读)——来自系统读控制信号;

WR(写)——来自系统写控制信号;

RESET(复位)——高电平时消除控制字寄存器,并将所有数据端口(A、B、C)置成输入工作方式,通常它接至系统复位信号。

2.4.1.5端口寻址

四个端口占用四个端口地址。通常,8255A的CS端接至译码器,由地址总线译码产生,也可直接连地址线;而A0、A1端大多直接与地址线A0、A1相连,作为片内四个端口的选址用。

2.4.28255A的工作方式

8255A有三种工作方式,可以通过程序设定,它们是:

方式0——基本输入/输出方式;

方式1——选通输入/输出方式;

方式2——双向传送方式。

2.4.2.1方式选择控制字

8255A的工作方式由CPU送往控制寄存器的内容设定。这个8位的控制命令字叫方式选择控制字。控制字的位6~位3用来设定A组,位2~位0用来设定B组,位7用来指明是否置工作方式控制字。

例如:将95H写入控制寄存器,8255被编程为A口方式0输入,B口方式1输出,PC7~PC4为输出,PC0~PC3为输入。

凡方式1、方式2未用到的PC位都可按方式0输入/输出。方式2只用于A口,此时A口的双向应答方式需用5个应答信号线,只剩下PC0~PC2用于方式0。

2.4.2.2C口按位置位/复位控制字

当控制字的D7位为0时,8255A将它解释为对端口C各位的置位/复位控制字。D6、D5、D4位无意义,D3、D2、D1位的不同组合代表C口的8位状态,D0表示置位或复位。

例如,将07H写入控制寄存器,表示把PC3置“1”,将06H写入控制寄存器,表示把PC3置“0”。

2.4.38255A与89C51单片微机的接口及应用

PA口地址为7FFCH(A15=0,A1=0,A0=0)

PB口地址为7FFDH(A15=0,A1=0,A0=1)

PC口地址为7FFEH(A15=0,A1=1,A0=0)

控制寄存器地址为7FFFH(A15=0,A1=1,A0=1)

8255A初始化是向控制字寄存器写入工作方式控制字和C口位置位/复位控制字。对于这两个控制字特征位的不同,8255A能加以区别。两个控制字都写入同一个控制字寄存器,但不受先后顺序限制。

例如,对8255A各口作如下设置:A口方式0,B口方式0,从A口输入,从B口、C口输出。

按各口的设置要求,工作方式控制字10010000,即90H。则初始化程序段为:

MOV A,#90H;设A 口输入,B 口、C 口输出,;A 口、B 口为方式0

MOV DPTR,#7FFFH

MOVX @ DPTR,A

MOV DPTR,#7FFCH;从A 口输入

MOVX A,@ DPTR

INC DPTR;从B 口输出

MOVX @ DPTR,A

INC DPTR;从C 口输出

MOVX @ DPTR,A

2.58155可编程I/O接口及扩展技术

芯片8155包含有256个字节的RAM存储器,二个可编程的8位并行口PA和PB,一个6位并行口PC和一个14位的减计数器。8155可以和MCS51直接接口,是一种多功能的扩展器,是MCS51应用系统中最适用的外围器件。

2.5.18155芯片的结构

其中AD0~AD7为三态地址数据总线,CPU和8155之间的地址、数据、命令和状态信息都通过它们传送。芯片各引脚功能说明如下:

RESET:8155内部复位信号输入端。当该脚出现5μs的正脉冲时8155被复位,复位后I/O口都变为输入方式。

AD0~AD7:三态地址/数据复用线。地址可以是8155RAM单元地址或I/O口地址,AD0~AD7上的地址由ALE的下降沿锁存到8155内部地址锁存器。

CE:片选信号线。低电平有效,也由ALE下降沿锁存到8155内部锁存器。

RD:读选通信号线。低电平有效,RD为低电平、CE=0时,8155内RAM单元或I/O口内容传送到AD0~AD7。

WR:写选通信号线。低电平有效,当CE=0、WR出现负脉冲时,CPU输出到AD0~AD7的数据写入8155RAM单元或I/O口。

IO/M:8155RAM存储器和I/O口选择线。当IO/M=0且CE=0时,CPU选择8155的RAM读写,AD0~AD7上的地址为8155的RAM单元地址;当IO/M=1且CE=0时,CPU选择8155的I/O口读写,AD0~AD7上的地址为8155的I/O口地址。

ALE:地址锁存信号线。8155片内有地址锁存器,ALE信号的下降沿将AD0~AD7上的地址信息以及CE、IO/M的状态锁存在8155内部寄存器。

PA0~PA7:端口AI/O线。

PB0~PB7:端口BI/O线。

PC0~PC7:端口CI/O线。

TIMERIN:定时计数器的输入端。

TIMEROUT:定时计数器的输出端。定时器选择不同的工作方式时,可以输出方波或脉冲。

2.5.2RAM和I/O口寻址方法

2.5.2.1寻址方法

在单片机应用系统中,8155是按外部数据存储器统一编址的,地址为16位,其高8位由片选线CE提供,低8位为片内地址。当IO/M=0时,CPU对8155RAM存储器进行读写,RAM低8位编址为00H~0FFH;当IO/M=1时,CPU对8155的I/O口进行读写。

2.5.2.2应用举例

电路中89C51的P2.7与8155的CE相连,89C51的P2.6与8155的IO/M相连,89C51的P0.0~P0.7与8155的AD0~AD7相连。此时,8155的RAM和I/O口地址分配为:

当P2.7=0,P2.6=0时,选中8155片内RAM,地址是3F00H~3FFFH。

当P2.7=0,P2.6=1时,选中I/O口,各口的地址分配为:

命令状态口地址:7F00H

PA口地址:7F01H

PB口地址:7F02H

PC口地址:7F03H

定时器低8位地址:7F04H

定时器高8位地址:7F05H

访问8155RAM或I/O口,可以用MOVX指令,如写端口A,可用下面程序:

MOVDPTR,#7F01H;指向A口

MOV A,#data;要写入内容→A

MOV X @ DPTR,A;写入A口

若将累加器A中内容写入8155RAM中7FH单元,可用下段程序实现:

MOVDPTR,#3F7FH;指向8155RAM7FH单元

MOVX @ DPTR,A;A→7FH单元

2.5.38155寄存器的功能

2.5.3.1命令寄存器

8155在操作前,必须由CPU向命令寄存器送命令字来设定其工作方式。命令寄存器由8位锁存器组成,应该指出的是:该寄存器只能写入,不能读出。

INTR为中断请求输出线,作为CPU的中断,高电平有效。当8155的A口或B口缓冲器接收到设备输入的数据或设备从缓冲器中取走数据时,中断请求线INTR升高(仅当命令寄存器相应中断允许位为1时),向CPU请求中断,CPU对8155的相应I/O口进行一次读/写操作,INTR变为低电平。

BF为I/O口缓冲器标志输出线。缓冲器有数据时,BF为高电平,否则为低电平。

STB为设备选通信号输入线,低电平有效。

在I/O口设定为输出口时,仍可用对应的口地址执行读操作,读取输出口的内容;设定为输入口时,输出锁存器被清除,无法将数据写入输出锁存器。所以每次通道由输入方式转为输出方式时,输出端总是低电平。8155复位时,清除所有输出寄存器,三个端口都为输入方式。

基本I/O和选通I/O的主要区别如下。

(1)基本I/O:联络线由程序指定;对数据输入、输出不起控制作用;没有中断能力;输出联络线完全由软件控制。

(2)选通I/O:联络线由硬件电路确定;输入联络线可以起选通数据锁存作用;中断允许时输入联络线变化会引起中断请求;输出联络线受外设共同控制,不能随意输出。

2.5.3.2状态寄存器

8155有一个状态寄存器,用来保存定时器和I/O口当前的状态,供CPU查询。状态寄存器只能读出,不能写入,且和命令寄存器共享一个地址。因此,可以认为8155的00H口是命令/状态寄存器口,对其写入时作为命令寄存器,写入的是命令;对其读出时,作为状态寄存器,读出的是当前I/O口和定时器的状态。

2.5.48155定时器

2.5.4.1定时器方式选择

8155的可编程定时器实际上是一个14位减法计数器,可对输入脉冲进行减法计数。在TIMERIN端输入计数脉冲,计满溢出时由TIMEROUT输出脉冲或方波。当TIMERIN接外脉冲时为计数方式,接系统时钟时,可作为定时方式,但需注意芯片允许的最高计数频率(4MHz)。

定时器由两字节组成:初值的低8位和高6位及输出方式控制的编址分别是04H和05H。

定时器有四种输出方式,由M1、M2两位定义。

2.5.4.2定时器编程

对定时器编程时,首先把计数长度和定时器方式装入定时器的04H和05H两字节。

计数长度在2~3FFFH之间选择。

任何时候都可以置定时器的长度和工作方式,然后必须将启动命令写入命令寄存器,即使计数器已经在计数,也是在写入启动命令后才以新计数长度和方式计数,这样可随时改变定时器的工作方式。

若写入定时器的初值为奇数,则方波输出是不对称的。例如计数初值为9时,定时器输出的5个脉冲周期内为高电平,4个脉冲周期内为低电平。

8155复位后并不预置定时器的方式和长度,而是停止计数器计数。另外,8155定时器在计数过程中,计数器的值并不直接表示外部输入的脉冲,因为计数器的终值为2,初值在2~3FFFH之间。若作为外部事件计数,由计数器的状态求输入脉冲数的方法如下:

(1)停止计数器计数;

(2)分别读出计数器的两个字节;

(3)取低14位的计数值;

(4)此值若为偶数,则右移一位即可得到输入脉冲数;此值若为奇数,则右移一位,再加上计数初值的二分之一的整数部分即可得到输入脉冲数。

2.5.589C51和8155的接口方法

MCS51单片机可以和8155直接连接,不需要任何外加逻辑。连接后可以直接为系统增加256个字节的片外RAM、22位I/O口线及一个14位的定时器。可直接与8155的AD0~AD7相连,既作低8位地址线,又作数据总线,地址锁存直接用ALE信号线;高8位地址由CE及IO/M的地址控制线决定。

若将A口定义为基本输出方式,B口定义为基本输入方式,C口也为输入方式,定时器作方波发生器,对输入脉冲进行24分频,此时对8155的初始化程序如下:

MOVDPTR,#7F04H;指向定时器低8位

MOVA,#18H;24分频常数

MOVXQDPTR,A;装入低8位

INCDPTR;指向定时器高8位

MOVA,#40H;设定定时器方式

MOVX @ DPTR,A;装入高8位

MOVDPTR,#7F00H;指向命令口

MOVA,#0C1H;控制字设定

MOVX @ DPTR,A;装入控制字

在同时需要扩展RAM和I/O口的MCS51应用系统中,选用8155特别经济。8155的RAM可以作为数据缓冲器,8155的I/O口可以外接打印机、BCD码拨盘开关、A/D转换器、D/A转换器以及作为控制信号的输入输出口。

思考与练习题2

1.MCS51系列单片机以8XC51表示,X的不同取值其意义何在请予以说明。

2.举例说明最小微机系统的组成及特点。

3.为什么MCS51单片机的程序存储器和数据存储器共处同一地址空间而不会发生总线冲突?

4.I/O扩展方法有哪些?各有什么特点?

5.说明8255A基本组成和各部分的主要功能。

6.8155有哪几种工作方式?其主要特点是什么?

7.8255控制字地址为300FH,请按:A口方式0输入,B口方式1输出,C口高位输出,C口低位输出,确定8255控制字并编写初始化程序。