(2)指定EOI方式:适合于在任何情况下使用。
(3)自动EOI方式:只有在一些以预定速率发生中断,且不会发生同级中断互相打断或低级中断打断高级中断的情况下,才使用自动EOI方式。
7.10 8259A仅有两个端口地址,它们如何识别ICW命令和OCW命令? 【解答】
ICW1特征是A0=0,并且控制字的D4=1。 ICW2特征是A0=1。
当ICW1中的SNGL位为0时工作于级联方式,此时需要写ICW3。 ICW4是在ICW1的IC4=1时才使用。 OCW1特征是A0=1。
OCW2特征是A0=0且D4D3=00。 OCW3特征是A0=0且D4D3=01。
7.11 在两片8259A级联的中断系统中,主片的IR6接从片的中断请求输出,请写出初始化主片、从片时,相应的ICW3的格式。
【解答】主片ICW3的格式为:
A0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 0 0 0 0 从片ICW3的格式为:
A0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 1 1 0 7.12 已知8086系统采用单片8259A,中断请求信号使用电平触发方式,完全嵌套中断优先级,数据总线无缓冲,采用自动中断结束方式,中断类型码为20H~27H,8259A的端口地址为B0H和B1H,试编程对8259A设定初始化命令字。
【解答】对8259A的初始化编程如下:
MOV AL, 1BH ; 写入ICW1,设定电平触发,单片 OUT B0H,AL
MOV AL, 20H ; 写入ICW2,设定IRQ0的中断类型码为20H OUT B1H, AL
MOV AL, 07H ;写入ICW4,设定完全嵌套方式,普通EOI方式 OUT B1H, AL
习题8
8.1 8237A DMA控制器有哪两种工作状态?其工作特点如何?
【解答】一种是系统总线的主控者,这是它工作的主方式。在取代CPU控制DMA传送时,它应提供存储器的地址和必要的读写控制信号,数据是在I/O设备与存储器之间通过数据总线直接传递;另一种是在成为主控者之前,必须由CPU对它编程以确定通道的选择、数据传送的模式、存储器区域首地址、传送总字节数等。在DMA传送之后,也有可能由CPU读取DMA控制器的状态。这时8237A如同一般I/O端口设备一样,是系统总线的从设备,这是8237A工作的从方式。
8.2 8237A进行DMA数据传送时有哪几种传送方式?
【解答】单字节传送方式、数据块传送方式、请求传送方式、级联方式。
8.3 若8237A的端口基地址为000H,要求通道0和通道1工作在单字节读传输方式,地址减1变化,无自动预置功能。通道2和通道3工作在数据块传输方式,地址加1变化,有自动预置功能。8237A的DACK为高电平有效,DREQ为低电平有效,用固定优先级方式启动8237A工作,试编写8237A的
初始化程序。
【解答】初始化程序如下:
DMA EQU 000H ;8237A的基地址为00H ;输出主清除命令
OUT DMA+0DH,AL ;发总清命令
;写入方式字:单字节读传输,地址减1变化,无自动预置功能,选择通道0 MOV AL,01101000B ;方式字 OUT DMA+0BH,AL ;写入方式字
;写入方式字:单字节读传输,地址减1变化,无自动预置功能,选择通道1 MOV AL,01101001B ;方式字 OUT DMA+0BH,AL ;写入方式字
;写入方式字:数据块传输方式,地址加1变化,有自动预置功能,选择通道2 MOV AL,10010010B ;方式字 OUT DMA+0BH,AL ;写入方式字
;写入方式字:数据块传输方式,地址加1变化,有自动预置功能,选择通道3 MOV AL,10010010B ;方式字 OUT DMA+0BH,AL ;写入方式字
;写入命令字:DACK为高电平有效,DREQ为低电平有效,用固定优先级方式 MOV AL,11000000 B ;命令字 OUT DMA+08H,AL ;写入8237A
8.4 试分析8253的6种工作方式的特点和功能。各方式下的时钟信号CLK和门控信号GATE分别起什么作用?
【解答】
方式0:计数结束,产生中断 方式1:可重复触发的单稳态触发器 方式2:分频器 方式3:方波发生器
方式4:软件触发的选通信号发生器 方式5:硬件触发的选通信号发生器
时钟信号CLK的作用:在8253进行定时或计数工作时,每输入1个时钟脉冲信号CLK,便使计数值减1。
GATE信号的控制作用如下: 工作方式 方式0 低电平 禁止计数 下降沿 暂停计数 不影响 GATE引脚输入状态所起的作用 上升沿 置入初值后WR上升沿开始计数,由GATE的上升沿继续计数 置入初值后,GATE的上升沿开始计数,或重新开始计数。 置入初值后,WR上升沿开始计数,方式2 禁止计数 停止计数 由GATE的上升沿重新开始计数 置入初值后,WR上升沿开始计数,由GATE的上升沿重新开始计数 置入初值后,WR上升沿开始计数,由GATE的上升沿重新开始计数 置入初值后,GATE的上升沿开始方式5 不影响 不影响 计数,或重新开始计数。 不影响计数 允许计数 高电平 允许计数 不影响计数 OUT引脚 输出状态 计数过程中输出低电平。计数至0输出高电平 输出宽度为n个CLK的低电平(单次) 输出宽度为n个CLK宽度为1个CLK的负脉冲 输出宽度为n个CLK的方波(重复波形) 计数至0,输出宽度为1个CLK的负脉冲(单次) 计数至0,输出宽度为1个CLK的负脉冲(单次) 方式1 不影响 方式3 禁止计数 方式4 禁止计数 停止计数 停止计数 允许计数 允许计数 8.5 设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 MOV OUT MOV OUT
AX,5000 DX,04B0H DX,AL AL,AH DX,AL
;计数器1初始化
MOV AL,72H MOV DX,04B6H OUT DX,AL
;计数器1赋初值
MOV MOV OUT MOV OUT
AX,1000 DX,04B2H DX,AL AL,AH DX,AL
连接图如下所示:
三八译码器A7A6A5S1D1S2S3D8A2A1D7-D0CSA1A0CLK0OUT0CLK1OUT15MHzINTRD7-D0GATE0GATE1+5V 图8-1 硬件连接图
8.6 将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 AL,1200 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号和控制口的地址。
习题9
9.1 可编程并行接口芯片8255A有哪几种工作方式?每种工作方式有何特点? 【解答】
方式0:没有固定的用于应答式传送的联络信号线,CPU可以采用无条件传送方式与8255A交换数据。
方式1:有专用的中断请求和联络信号线,因此,方式1通常用于查询传送或中断传送方式。 方式2:PA口为双向选通输入/输出或叫双向应答式输入/输出。
9.2 8255A的方式选择控制字和C口按位控制字的端口地址是否一样?8255A怎样区分这两种控制字?写出端口A作为基本输入,端口B作为基本输出的初始化程序。
【解答】8255A的方式选择控制字和C口按位控制字的端口地址是一样的,通过控制字的最高位D7进行区分:D7=1时,为方式选择控制字;D7=0时,为C口按位控制字。
初始化程序段如下:
MOV DX,PORT ;PORT为端口地址 MOV AL,10010000B OUT DX,AL
9.3 某8255A的端口地址范围为03F8H~03FBH,A组和B组均工作在方式0,A口作为数据输出端口,C口低4位作为状态信号输入口,其它端口未用。试画出该片8255A与系统的连接图,并编写初始化程序。
【解答】 连接图如下:
IOWIORD7-D0A0A1A7A6A5S1D1S2S3D8三八译码器WRPA7-PA0RDD7-D0A0A1PC3-PC0CS
图9-1 8255A与系统的连接图
程序如下:
MOV AL,81H MOV DX,03FBH OUT DX,AL
9.4 试按以下要求对8255A进行初始化编程:
(1)设端口A、端口B和端口C均为基本输入/输出方式,且不允许中断。请分别考虑输入/输出。