第九章:通用可编程接口芯片
一、选择题
1、8255A引脚信号WR=0,CS=0,A1=1,A0=1时,表示(CPU向控制口送控制字)
2、8255A A组工作于方式O,B组工作于方式1,A口输出,B口输入,设计工作方式选择控制字为(10000110B)
3、8255A工作于方式1输入时A口(B口)INTE是受(PC4(PC2))控制的。
4、对8255的C口D3位置1的控制字为(00000111B )。
5、8255的(端口C)一般用作控制或状态信息传输。
二、填空题
1、8255A控制命令字中,若D7=1为方式选择控制命令字,若D7=0时为C端口置0置1命令字。
2、当8255A的PC4~PC7全部为输出线时,表明8255A的A端口的工作方式是0方式
3、若使8086与8255A连接时8086引脚A1和A2与8255A的A0、A1连接。
4、当8255A引脚RESET信号为高电平有效时,8255A内部所有寄存器内容被清零,同时三个连接数据端口被自动设置为输入端口。
5、8255方式0用于A口和C口高4位输出,B口和C口低4位输入,控制字为(83)H。
三、判断题
1、8255A工作于方式O,端口C两部分可以独立的作为输入或输出端口。(√)
2、8255A C口按位置位/复位控制字是写入C口的控制字。(×)
四、简答题
1、可编程并行接口芯片8255A有哪几种工作方式?每种工作方式有何特点?【解答】方式0:没有固定的用于应答式传送的联络信号线,CPU可以采用无条件传送方式与8255A交换数据。方式1:有专用的中断请求和联络信号线,因此方式1通常用于查询传送或中断传送方式。方式2:PA口为双向选通输入/输出或叫双向应答式输入/输出。
2、对8255A的控制口写入B0H,其端口C的PC5引脚是什么作用的信号线?试分析8255A各端口的工作状态。当控制字为B0H时,即10110000B,端口A工作在方式1,作输入,端口C的上半部作输出,B端口工作在方式0,作输出,端口C的低4位作输出。当8255A的端口A工作在方式1下作输入时,PC5的引脚作状态信号IBFA,即输入缓冲器满信号。
3、编一个初始化程序,使8255A的PC5端输出一个负跳变。如果要求PC5端输入一个负脉冲,则初始化程序又是什么情况?
MOV AL,0BH
MOV DX,控制端口地址
OUT DX,AL
MOV AL,0AH
OUT DX,AL
输出负脉冲时需要增加以下两句:
MOV AL,0BH
OUT DX,AL
4、设8255A的4个端口地址为0060H-0063H,试写出下列各种情况的工作方式命令字。(1)A组B组工作在方式0,A口B口为输入口,C口为输出口。(2)A组工作在方式2,B组工作在方式1,B口为输出口。(3)A组B组都工作在方式1,均为输入口,PC6和PC7为输出。
答:(1)92H(2)C4H(3)B6H
5、简述8255A工作在方式1输出时的工作过程
a:CPU接受中断请求,使用OUT指令向8255A输出数据并发写信号WR,WR信号的上升沿一方面清除INTR中断请求信号,表示已响应中断,另一方面使OBF有效。b:OBF信号有效表示输出缓冲区已满,通知外设取走数据。c:外设接收数据,将ACK信号置为"0",即向8255A发回答信号,表示已收到数据。ACK的下降沿使OBF轩"1",表示数据已取走。ACK的上升沿使INTR有效。d:INTR有效,向CPU发中断请求,请求输出下一个数据。
6、8255A的方式0一般使用在什么场合?在方式0时,如果要使用查询方式进行输入输出,应该如果处理?
方式0的使用场合有两种,一种是同步传送,另一种是查询式传送。在方式0情况下,没有规定固定的应答信号,所以,这时,将端口A和端口B作为数据端口,把端口C的4个数位(高4位或者是低4位均可)规定为输出口,用来输出一些控制信号,而把端口C的另外4个数位规定为输入口,用来读入外设的状态,即利用端口C来配合端口A和端口B的输入/输出操作。使用查询方式进行输入输出时,可利用端口C的某一位作查询,只有当该位为1时,方可以将数据送到输入或输出端口去。
五、综合题
1、设8253芯片的计数器0、计数器1和控制口地址分别为04B0H、04B2H、04B6H。定义计数器0工作在方式2,CLK0为5MHz,要求输出OUT0为1KHz 方波;定义计数器1用OUT0作计数脉冲,计数值为1000,计数器减到0时向CPU发出中断请求,CPU响应这一中断请求后继续写入计数值1000,开始重新计数,保持每一秒钟向CPU发出一次中断请求。试编写出对8253的初始化程序,并画出硬件连接图。
【解答】由题目知计数器1工作在方式0下,参考程序段如下:
;计数器0初始化
MOV AL,34H
MOV DX,04B6H
OUT DX,AL
;计数器0赋初值
MOV AX,5000
MOV DX,04B0H
OUT DX,AL
MOV AL,AH
OUT DX,AL
;计数器1初始化
MOV AL,72H
MOV DX,04B6H
OUT DX,AL
;计数器1赋初值
MOV DX,04B2H
OUT DX,AL
MOV AL,AH
OUT DX,AL
连接图如下所示:
三八译码器
A7
A6
A5
INTR
图8-1 硬件连接图
2、将8253定时器0设置为方式3(方波发生器),定时器1设置为方式2(分频器)。要求定时器0的输出脉冲作为定时器l的时钟输入,CLK0连接总线时钟4.77MHz,定时器1输出OUT1约为40Hz,试编写实现上述功能要求的程序。
【解答】参考程序段如下:
;0号计数器初始化
MOV AL,16H
MOV DX,PORTC
OUT DX,AL
;0号计数器赋初值
MOV DX,PORT0
OUT DX,AL
;1号计数器初始化
MOV AL,54H
MOV DX,PORTC
OUT DX,AL
;1号计数器赋初值
MOV AL,100
MOV DX,PORT1
OUT DX,AL
注:PORT0、PORT1、PORTC分别为0号、1号和控制口的地址。
3、某8255A的端口地址范围为03F8H~03FBH,A组和B组均工作在方式0,A口作为数据输出端口,C口低4位作为状态信号输入口,其它端口未用。试画出该片8255A与系统的连接图,并编写初始化程序。
【解答】
连接图如下:
A7
A6
A5
三八译码器
图9-1 8255A与系统的连接图
程序如下:
MOV AL,81H
MOV DX,03FBH
OUT DX,AL
4、试按以下要求对8255A进行初始化编程:
(1)设端口A、端口B和端口C均为基本输入/输出方式,且不允许中断。请分别考虑输入/输出。(2)设端口A为选通输出方式,端口B为基本输入方式,端口C剩余位为输出方式,允许端口A中断。(3)设端口A为双向方式,端口B为选通输出方式,且不允许中断。
【解答】(1)端口A、端口B和端口C均为基本输入/输出方式,则为方式0,任何一个口都可用于输入或输出,可出现16种组合,这里只举出2种组合。
若端口A、B为数据输入口;C口的低4位为控制信号输出口,高4位为状态信号输入口,程序段如下:
MOV AL,10011010B
MOV DX,PORT ;PORT为端口地址
OUT DX,AL
MOV AL,00001100B ;设PC6为中断信号控制引脚,PC6=0,禁止中断OUT DX,AL
若端口A、B为数据输出口;C口的高4位为控制信号输出口,低4位为状态信号输入口,程序段如下:
MOV AL,10000000B
MOV DX,PORT ;PORT为端口地址
OUT DX,AL
MOV AL,00001100B ;设PC6为中断信号控制引脚,PC6=0,禁止中断OUT DX,AL
(2)端口A为选通输出方式,方式1;端口B为基本输入方式,程序段如下:MOV AL,10100010B
MOV DX,PORT ;PORT为端口地址
OUT DX,AL
MOV AL,00001101B ;设PC6为中断信号控制引脚,PC6=1,允许中断OUT DX,AL
(3)端口A为双向方式,方式2;端口B为选通输出方式,程序段如下:MOV AL,11000100B
MOV DX,PORT ;PORT为端口地址
OUT DX,AL
MOV AL,00001100B ;设PC6为中断信号控制引脚,PC6=0,禁止中断OUT DX,AL
4、一般按一次键,CPU通过程序可以判别是否有键按下,并识别具体的键值。若键扫描程序处理不当,可能会出现下述情况:仅按一次键,但CPU识别为同一个键多次被按下,试分析可能发生这种情况的原因。
【解答】通过程序判别按键,需要考虑按键的消抖问题,若采用软件方法进行消抖需要设置延时等待抖动消失,然后再读入键值。分析题中可能发生这种情况的原因是:键扫描程序没有设置延时或延时时间过短,没能有效的消除抖动
设8255A接到系统中,端口A、B、C及控制口地址分别为220H、221H、222H 及223H,工作在方式0,试编程将端口B的数据输入后,从端口C输出,同时,将其取反后从端口A输出。
解:MOV DX,223H
MOV AL,82H
OUT DX,AL
MOV DX,AL
MOV AL,221H
IN AL,DX
MOV DX,222H
OUT DX,AL
NOT AL
MOV DX,220H
OUT DX,AL
5、8255A的A口和B口工作在方式0,A口为输入端口,接有7个开关;B口为输出端口,接有1个7段发光二极管,其硬件连接电路如图10.18所示,LED 显示0-FH的各字符代码列表如表10-3。试编一程序要求7段发光二极管显示开关所拨通的数字。(其中A口地址8020H B口地址8022H C口地址8024 控制口地址8026)
答:源程序如下:
APORT EQU 8020H
BPORT EQU 8022H
CPORT EQU 8024H
CONTR EQU 8026H
DATA SEGMENT
TAB1 DB 3FH,06H,5BH,4FH,66H,7DH,07H DB 7FH,6FH,77H,7CH,5EH,79H,71H DATA ENDS
CODE SEGMENT
ASSUME: CS:CODE DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV AL,90H
MOV DX,CONTR
OUT DX,AL
ADDR1: MOV DX,APORT
IN AL,DX
AND AL,OFH
MOV BX,OFFSET TAB1
XLAT
MOV DX,BPORT
OUT DX,AL
MOV CX,0400H
ADDR2: DEC CX
JNZ ADDR2
JMP ADDR1
CODE ENDS
END START
6、可编程并行接口芯片8255A面向I/O设备一侧的端口有几个?其中C口的使用有哪些特点?
8255A面向I/O设备一侧有3个8位的端口:A口、B口和C口,或者说有2个8位的端口(A口、B口)和2个4位的端口(C上、C下)。
其中,C口比较特殊,它的特点主要有:作为数据口,可分为两个独立的4位口(C上、C下)使用;1方式和2方式时,C口的部分引脚作为A、B口的固定联络信号线;1方式和2方式时,C口作为状态口使用;C口的引脚可以用按位置/复位命令字进行按位控制。
7、可编程并行接口芯片8255A的编程命令有哪两个?试分别说明它们的作用及其命令格式中每位的含义是什么?
8255A有两个编程命令:方式命令字和C口按位置/复位命令字。
方式命令字:用于对8255A进行初始化编程,设定A、B、C口的工作方式及传送方向,其命令格式及各位含义如下:
。。。。。
C口按位置/复位命令字:用于对8255A进行动态控制,在应用过程中,需要对C口的某个引脚进行按位操作时使用,对已设定好的工作方式无影响,其命令字格式及各位含义如下:
。。。。。
8、 “由于按位置/复位命令字是对C 口进行操作,所以可以写到C 口”,这句话对吗?为什么?
这句话不对,因为“按位置/复位命令字”是命令字的格式,必须写入到控制口,如果写入到C 口就作为一个普通的数据,完成的功能完全不同。 9、如何对8255A 进行初始化编程?
对8255A 进行初始化编程主要是写入方式字,设置所使用的每个数据口的工作方式及传送方向。另外,如果有必要,在初始化时还要写入将PC 某个引脚置1或清0的命令字(C 口按位置/复位命令字)。
10、可编程并行接口芯片8255A 有哪几种工作方式?各自的特点何在? 8255A 有3种工作方式,其中A 口可工作于方式0、方式1和方式2;B 口只能工作于方式0和方式1。
方式0的特点:①是基本输入/输出方式,输出有锁存功能,输入有缓冲功能,采用无条件方式或查询方式与CPU 交换信息;②2个8位口和2个4位口,24根I/O 信号线全部由用户控制;③无专用联络信号线;无固定时序;无确定的状态字;④单向I/O
方式1的特点:①是选通(应答)输入/输出方式,输入、输出都具有锁存功能,采用查询方式或中断方式与CPU 交换信息;②A 、B 口作为数据口,C 口部分引脚作专用联络信号线,这些信号线用户不能指定为其他用途;③有专用联络信号线;有固定时序;有确定的状态字;④单向I/O
方式2的特点:①A 口为双向选通(应答)输入/输出方式,采用查询方式或中断方式与CPU 交换信息;②有专用联络信号线;有固定时序;有确定的状态字;
1:置位
0:复位
联络线定义、时序及状态字都是方式1输入和输出的组合。
11、在1方式下输入和输出时,其专用联络信号是如何定义的?联络信号线之间的工作时序关系如何?
1方式下输入时,定义了8255A 与I/O 之间的2根相互联络信号线,还在8255A 与CPU 之间设置了中断申请信号线:
:外设给8255A 的“输入选通”信号,低有效,将数据送入8255A ;
IBF :8255A 给外设的“输入缓冲器满”信号,高有效,阻止外设送新数据; INTR :8255A 给CPU 的“中断申请”信号,高有效,请求CPU 读取数据。
联络信号之间的时序关系:
I/O 设备
STB IBF
① ② 1方式下输出时,定义了8255A 与I/O 之间的2根相互联络信号线,还在8255A 与CPU 之间设置了中断申请信号线:
:8255A 给外设的“输出缓冲器满”信号,低有效,通知外设取数据;
:外设给8255A 的“回答”信号,低有效,通知8255A 数据已取走;
INTR :8255A 给CPU 的“中断申请”信号,高有效,请求CPU 写入下一个数据。
联络信号之间的时序关系:
CPU
设备
WR INTR
④ ① 12、现有一四相步进电机,按双八拍方式运行。要求: 设计接口电路(根据本题(2)的要求设计);
编制下列控制程序:①上电后,步进电机来回走100步,当按下SW1开关时,停止走步;②步进电机先向一个方向连续慢走,当开关SW1按下时,快速反走,直到按下SW2时才停机;③对步进电机进行点动控制,即每按一次SW1开关,
STB OBF
ACK
步进电机就走一步,按SW2停止运行;④在键盘上按S键和s键,启动步进电机开始走步;按SW1键停止;
画出四个控制程序的流程图。
四相电机,双八拍方式各相绕组循环轮流通电的方式为:
AB→ABC→BC→BCD→CD→CDA→DA→DAB
相序表如下:
利用PB 口作为数据口,传送加电代码;PC 口检测两个按键开关,硬件设计如图所示:
初始化流程图如图(a )所示,4个控制程序的流程图如图(b )、(c )、(d )、(e )所示:
(a)初始化
初始化程序段
MOV DX,303H MOV AL,81H OUT DX,AL MOV AL,0FH OUT DX,AL