1.21k likes | 1.4k Views
第九章 输入 / 输出接口. 9.1 可编程中断控制器 8259A 9.2 可编程计数 / 定时控制器 8253 9.3 可编程 DMA 控制器 8237A. 主要内容. 9 .1 计算机中断系统 9 .2 8086的中断方式 9 .3 中断控制器INTEL8259A 9.4 可编程计数 / 定时控制器 8253 9.5 可编程 DMA 控制器 8237A. ( 1 )并行操作,提高工作效率 CPU 与外设同时工作,多个外设同时工作。 ( 2 )实现实时处理 在控制系统中,有些参量要求计算机能快速处理,用中断方式很容易实现。
E N D
第九章 输入/输出接口 9.1 可编程中断控制器8259A 9.2 可编程计数/定时控制器8253 9.3 可编程DMA控制器8237A
主要内容 • 9.1 计算机中断系统 • 9.2 8086的中断方式 • 9.3 中断控制器INTEL8259A • 9.4 可编程计数/定时控制器8253 • 9.5 可编程DMA控制器8237A
(1)并行操作,提高工作效率 CPU与外设同时工作,多个外设同时工作。 (2)实现实时处理 在控制系统中,有些参量要求计算机能快速处理,用中断方式很容易实现。 (3)故障处理 出现故障,提出中断申请,要求计算机及时响应。 9.1 计算机中断系统 一、中断的作用
9.1 计算机中断系统 二、中断源 引起中断的原因或能发出中断申请的来源。 (1)一般的输入输出设备 键盘,打印机,鼠标等。 (2)数据通道中断源 软盘,硬盘等。 (3)实时时钟 用外部时钟定时发出中断信号,由CPU进行处理。
9.1 计算机中断系统 中断源(续) (4)故障源 • (a)外设故障 电源掉电,运行超限等。 • (b)计算机故障 内存出错,输入输出出错等。 (5)测试程序时设置的中断源 • 硬件断点:硬件调试器 • 软件断点:INT 21H • 调试程序应支持单步运行和断点运行
9.1 计算机中断系统 三、 中断系统功能 (1)实现中断及返回 (a)检测中断(每个指令最后一个时钟周期) 中断源发出中断申请,CPU中断开放情况下可检测到中断源。 (b)响应中断时要保护断点和现场 断点自动保护,现场要在中断服务程序中保护。 • 注意:在编制中断服务程序时一定要保护现场。
9.1 计算机中断系统 三、中断系统功能(续) (c)中断服务完成时要撤消中断申请信号 (d)中断处理完成后要恢复现场和断点,返回原程序继续执行。
9.1 计算机中断系统 (2)对中断进行控制 一般中断系统中计算机都可对中断申请进行控制。 (a)对中断申请进行控制 一个输入设备中断接口电路 三、中断系统功能(续)
三、中断系统功能(续) 说明: (1)外设准备好数据发EOC信号(负脉冲),把数据放到接口线上,同时置“1”中断申请触发器。 (2)执行指令 • MOV AL,01H • MOV DX,0162H • OUT DX,AL 则中断允许触发器为“1”,中断开放。此时INTR为高电平,向CPU发中断申请。
三、中断系统功能(续) 若禁止中断,则执行如下程序段: • MOV AL,00H • MOV DX,0162H • OUT DX,AL (3)INTR为高电平,若CPU中断开放(IF为“1”),则响应中断。在中断响应周期,INTA有效两次,读取中断类型码,清除中断申请触发器。 (4)在中断服务程序中读取外设数据 • MOV DX,0160H • IN AL,DX
三、中断系统功能(续) (b)对响应中断控制 • 8086CPU内的标志寄存器Flag中有一个中断标志位IF,由它控制CPU是否查询INTR引脚。 STI IF=1 允许中断 CLI IF=0 禁止中断
三、中断系统功能(续) (3)能实现优先权排队 (a)多个中断源申请中断时的优先权。 • 多个中断源申请中断时,CPU根据预先设定的优先权,先为高级中断服务,然后再为低优先级中断服务。 (b)高级中断能中断低级中断实现中断嵌套。 • CPU在处理中断时,如果有高级中断申请,则CPU停止现行中断处理,转去响应高级中断,然后再去处理原先的中断。如果有低级中断申请则不予响应。
(4)寻找中断源 有中断申请则查找中断源,决定中断服务程序入口地址。 (a)预先约定 一有中断申请则转到固定地址执行中断服务程序。 电路简单,但一般只能为一个中断源服务。 (b)查询 在中断服务程序中查询中断源。 (c)应答方式(矢量中断) 响应中断时CPU发中断响应信号,中断源收到此信号发出中断类型码,CPU根据中断类型码决定中断服务程序入口地址。 三、中断系统功能(续)
三、中断系统功能(续) (5)中断优先权及中断源的查找 (a)软件查询 • CPU响应中断后用软件查询哪个外设申请中断。 • 查询程序: IN AL,20H LEA BX,BRNTAB CIRCLE: SHR AL,1(转下页)
(接上页) JC GETAB ADD BX,2 OR AL,AL JNZ CIRCLE JMP ERROR GETAB: JMP CS:[BX] BRNTAB DW SUB1,SUB2 DW SUB3, SUB4 DW SUB5,SUB6 DW SUB7,SUB8 三、中断系统功能(续) 查询方法优点: 1、查询次序即是优先权次序。 2、省硬件,不需要硬件排队电路。 缺点: 转至服务程序入口时间长。
(b)链式优先权排队电路(如图所示) 三、中断系统功能(续)
说明: (1)每个接口都有一个中断允许输入IEI和中断允许输出IEO.只有IEI为高电平才允许该片发中断申请。 (2)IEO=IEI•HELP HELP表示该设备需要服务。 (3)每个接口芯片的中断申请输出为OC门,具有负逻辑的“线或”关系。 (4)响应中断时由INTA从接口读取中断矢量。 三、中断系统功能(续)
(c)中断优先权编码电路(如图所示) 三、中断系统功能(续)
三、中断系统功能(续) 说明: (1)中断请求寄存器由IR0~IR7可分别引入8个外设的中断请求。 (2)优先权编码器把当前最高优先级的输入编码输出。 (3)中断服务寄存器记录正在服务的中断申请。 (4)中断申请的最高级与正在服务的最高级比较,只有申请级高于服务级才能提出中断申请(INT)。
一、8086的中断 8086CPU中断有两类: 软件中断——由指令执行引起的中断。 硬件中断——由外部请求引起的中断。 9.2 8086的中断方式
一、8086的中断 (1)外部中断 (a)可屏蔽中断 • 中断申请输入端为INTR,高电平有效。CPU在每一条指令最后一个T状态检测该引脚。在CPU内部该引脚受IF控制。CPU响应中断后INTA有效两次,从外设端口读取中断矢量,确定中断号。 (b)非屏蔽中断 • 输入引脚NMI上升沿有效。非屏蔽中断不受CPU控制,有申请一般都要响应。CPU响应非屏蔽中断转向2号中断(INT 2)。非屏蔽中断一般用于非常事件。PC/XT机中用于系统板上RAM奇偶错,I/O通道奇偶错和8087异常中断。
一、8086的中断 (2)内部中断 (a)DIV和IDIV指令 • 若除数为0或商超过寄存器所能表达的范围,则产生类型为0的内部中断。 (b)INT 指令 • 执行INT n指令引起的中断。 (c)INTO 指令 • 若OF=1则指令INTO引起类型为4的内部中断。 (d)单步中断 • 若TF=1则CPU每执行完一条指令产生类型为1的内部中断。
二、中断向量表 • 8086CPU在内存的前1KB(地址00000H~003FFH)建立一个中断向量表,存放256个中断服务程序的入口地址,每个地址占4个字节。前两个字节为中断服务程序偏移地址IP,后两个字节为段地址CS。中断号乘以4得到中断服务程序入口地址的地址。
三、中断响应过程 CPU得到中断类型码后,执行如下操作: (1)将类型码乘4,作为中断向量表的指针。 (2)把标志寄存器入栈。 (3)复制TF,清IF和TF,屏蔽新的INTR申请和单步中断。 (4)保护断点(CS和IP进栈)。 (5)从中断向量表中取中断服务程序入口地址,分别送CS和IP。 (6)按新地址执行中断服务程序。
(1)功能简介 Intel8259是与8080/8085系列以及8086/8088系列兼容的可编程的中断控制器。 (1)具有8级优先权控制,通过级联可扩展至64级优先权控制。 (2)每一级中断都可以屏蔽和允许。 (3)中断响应时提供中断向量。 (4)中断申请可以由电平触发,也可由边沿触发。 (5)有多种工作方式。 9.3 中断控制器INTEL8259A 一、INTEL8259A结构与功能
一、INTEL8259A结构与功能 (2)内部结构
说明: (1) 8259A有8个外部请求输入端IR0~IR7,由中断请求寄存器IRR保存申请状态。 (2)中断服务寄存器ISR保存CPU正在处理的中断请求。 (3)中断屏蔽寄存器IMR对中断申请进行控制。 (4)中断优先级分析器决定中断申请的优先级。 (5)控制逻辑中含有两个寄存器组: 初始化命令寄存器组ICW1~ICW4 操作命令寄存器组OCW1~OCW3。 (6)级联逻辑控制8259A主从工作方式。 一、INTEL8259A结构与功能
一、INTEL8259A结构与功能 (3)8259A引脚及功能 (a)引脚图 (b)引脚功能 • D7~D0双向,三态数据线,可直接与系统总线相连。
IR7~IR0:8条外中断请求输入线,可为高电平有效或上升沿有效。IR7~IR0:8条外中断请求输入线,可为高电平有效或上升沿有效。 RD:读信号,输入,低电平有效,若有效则把数据从8259A读到CPU。 WR:写信号,输入,若有效则把数据写到8259A。 CS:片选信号,低电平有效,给8259A分配地址。 A0:用于选择259A内部不同寄存器。 INT:中断申请线,高电平有效, 8259A向CPU中断申请。 INTA:输入,低电平有效,有效时从8259A读取中断矢量。 CAS2~CAS0:级联信号线,当8259A为主片时为输出线,从片时为输入线。收到第一个INTA时,主片通知有中断申请的从片在第二个INTA时送出中断矢量。 SP/EN:在非缓冲工作方式时,输入,决定主片还是从片;在缓冲工作方式时,输出,由它打开总线缓冲器。 一、INTEL8259A结构与功能
二、中断响应过程(CPU与8259A的操作过程) (a)申请中断 外设 对应IR0 ~ IR7为“1”,判优后使INT为“1” CPU的INTR输入“1”,申请中断。 (b)响应中断的条件 CLI 使 IF = 0,禁止中断。 STI 使 IF = 1,允许中断。 (c)响应中断 CPU先做三个工作: (1) 将FR进栈 (2) 使出IF = 0,TF = 0 (3) 断点的CS、IP进栈
二、中断响应过程(CPU与8259A的操作过程) (d) INTA脉冲周期 CPU响应中断经INTA引脚发两个INTA脉冲 第一个INTA脉冲,通知8259A,CPU响应中断,将ISR置1。 第二个INTA脉冲,8259A送中断类型号,CPU将n×4找到中断服务程序入口地址,执行中断程序。 (e)中断服务程序 (1)开中断(STI) (2)保存现场(PUSH) (3)处理部分 (4)中断结束 EOI (5)恢复现场 (POP) (6)中断返回 IRET
三、8259A的工作方式 (a)设置优先级的方式 (1) 完全嵌套(固定优先级方式) (2)特殊完全嵌套 (3)优先级自动循环方式 (4) 优先级指定(特殊)循环方式 (b)中断结束的方式 (1)一般EOI命令 (2)特殊EOI命令(SEOI) (3)自动EOI命令 (AEOI) (c)中断屏蔽方式 (1)一般屏蔽 (2)特殊屏蔽 (d)中断触发:电平触发,沿触发,中断查询 (e)8259A的级联
四、8259A与计算机的连接 (1)单片工作方式的接口电路
(1)数据线与控制信号对应连接。 (2)由74LS30(8输入的与非门)和74LS138(3-8译码器)对地址线进行译码决定端口地址,地址为? (3)8086使用低8位数据线与8259A传递信息。8086的A1接到8259的A0线上,使用偶地址。 (4)CAS2、CAS1、CAS0未接,SP/EN接正电源。 四、8259A与计算机的连接 说明:
四、8259A与计算机的连接 (2)由两片8259A级联方式管理15级向量中断。
四、8259A与计算机的连接 说明: (1)从片8259A的中断申请端INT接主片的IR2 (2)主片的SP/EN接+5V,从片的SP/EN接地,主从片的CAS2、CAS1、CAS0对应连接。 (3)主片的端口地址INTA1CS为020H ~ 03FH, 从片的端口地址INTA2CS为0A0~ 0BFH. (4)8086系统主从芯片都用偶地址传递信息。
五、8259A的编程 D3 A0 D7 D6 D5 D4 D2 D1 D0 (1)初始化命令字 (a) ICW1 1 LT 1 X X X 0 X S 1:单片(不要ICW3) 0:级连(要ICW3) 地址线的状态 特征位 1:电平触发 0:沿触发 8086 CPU,D7,D6,D5,D2任意,D0为1 写入ICW1后,8259A是处于完全嵌套方式, 清除IMR。
A0 D7 D6 D4 D3 D2 D1 D0 D5 1 T2 T4 T3 T1 T7 T6 T5 T0 IR的编码,8259A自动填入 中断类型码的高5位 五、8259A的编程 (b)ICW2(设置中断类型号)
D1 D4 D3 D2 D0 D6 D5 D7 1 S7 S6 S5 S4 S3 S2 S1 S0 Sn = 1表示主片的IRn接从片 Sn = 0表示主片的IRn未接从片 A0 D7 D6 D4 D3 D2 D1 D0 D5 0 0 0 0 0 1 ID2 ID1 ID0 ……….. 000 IR0 001 IR1 111 IR7 五、8259A的编程 (c) ICW3(级连时用,单片不用) A0 主片8259A: 从片8259A: 从片连主片IRn 的序号
A0 D7 D6 D4 D3 D2 D1 D0 D5 0 0 SF BF M/S 1 0 1 AEOI 1:AEOI 0× = 非缓冲 1 0 = 从片缓冲 1 1 = 主片缓冲 1:特殊完全嵌套 五、8259A的编程 (d) ICW4 注意:(1)ICW1 ~ ICW4必需顺序写入,即使改变一个参数也 需全部重新写入ICW (2)单片只写ICW1,ICW2,ICW4,不要ICW3 级连ICW1 ~ ICW4全要,但主、从片的ICW3不同 (3)ICW1的A0 = 0,其它ICW的A0 = 1
A0 D7 D6 D5 D4 D3 D1 D0 D2 1 M7 M6 M5 M4 M3 M2 M1 M0 五、8259A的编程 (a)OCW1(屏蔽) (2)操作命令字 Mn = 1禁止中断(屏蔽),Mn = 0允许中断
五、8259A的编程 (b)OCW2(设置EOI,SEOI,循环) (2)操作命令字
五、8259A的编程 (c) OCW3(特殊屏蔽设置,中断查询,读IRR,ISR) (2)操作命令字 D1(ERIS)做为D0(RIS)的开放位 D6(ESMM)做为D5(SMM)的开放位
五、8259A的编程 (a) 8259A初始化编程顺序 (3) 8259A初始化编程
五、8259A的编程 (b) IBM PC/XT 单级8259A初始化 (1)端口地址为020H和022H。 (2)接受8个中断请求信号为边沿触发。 (3)选择全嵌套方式,IR0为最高优先级,IR7为最低优先级。 (4)设定IR0中断号为08H. (3) 8259A初始化编程
五、8259A的编程 初始化程序段: INTA00 EQU 20H INTA01 EQU 22H MOV AL,13H ; OUT INTA00,AL ;ICW1 MOV AL,08H ; OUT INTA01,AL ;ICW2 MOV AL,09H ; OUT INTA01,AL ;ICW4
五、8259A的编程 (c)在AT/286以上档机器上,使用两片8259A级联组成15个中断申请输入端。 (1)端口地址主片为020H和022H,从片为A0H和A2H。 (2)接受上升沿触发中断请求信号。 (3)选择全嵌套方式,优先级排列次序为0级最高,依次为1级,8~15级,然后是3~7级。 (4)采用非缓冲方式,主片SP/EN接+5V,从片SP/EN接地。 (5)设定主片中断号为08H~0FH,从片为70H~77H.
初始化程序段: INTA00 EQU 20H INTA01 EQU 22H INTB00 EQU 0A0H INTB01 EQU 0A2H MOV AL,11H ; OUT INTA00,AL;主片ICW1 JMP SHORT $+2 ;I/O口要求延时 MOV AL,08H ; OUT INTA01,AL;ICW2 JMP SHORT $+2 MOV AL,04H ; OUT INTA01,AL;ICW3 JMP SHORT $+2 五、8259A的编程
五、8259A的编程 初始化程序段(续): MOV AL,01H ; OUT INTA01,AL ;ICW4 JMP SHORT $+2 MOV AL,11H ; OUT INTB00,AL ;从片ICW1 JMP SHORT $+2; MOV AL,70H ; OUT INTB01,AL ;ICW2 JMP SHORT $+2 MOV AL,02H ; OUT INTB01,AL ;ICW3 JMP SHORT $+2 MOV AL,01H ; OUT INTB01,AL ;ICW4
【课后习题】 1、写出分配给下列中断类型号在中断向量表中的物理地址。(1) INT 12H (2) INT 8 答案 答(1)00048H (2)00020H 2、用CALL指令来模拟实现INT 21H显示字符T的功能。 答: mov ah, 02mov dl, ‘T’mov bx, 0mov ds,bxmov bx, 21h * 4call far ptr [bx] 答案 答案 答: (SP) = 00FAH(SS) = 0300H (IP) = 0040H (FLAGS) = 0040H 3、 给定(SP)=0100,(SS)=0300,(FLAGS)=0240,以下存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT 8,试问执行INT 8指令后,SP,SS,IP,FLAGS的内容是什么?栈顶的三个字是什么?