1 / 121

第九章 输入 / 输出接口

第九章 输入 / 输出接口. 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 )实现实时处理 在控制系统中,有些参量要求计算机能快速处理,用中断方式很容易实现。

katima
Download Presentation

第九章 输入 / 输出接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章 输入/输出接口 9.1 可编程中断控制器8259A 9.2 可编程计数/定时控制器8253 9.3 可编程DMA控制器8237A

  2. 主要内容 • 9.1 计算机中断系统 • 9.2 8086的中断方式 • 9.3 中断控制器INTEL8259A • 9.4 可编程计数/定时控制器8253 • 9.5 可编程DMA控制器8237A

  3. (1)并行操作,提高工作效率 CPU与外设同时工作,多个外设同时工作。 (2)实现实时处理 在控制系统中,有些参量要求计算机能快速处理,用中断方式很容易实现。 (3)故障处理 出现故障,提出中断申请,要求计算机及时响应。 9.1 计算机中断系统 一、中断的作用

  4. 9.1 计算机中断系统 二、中断源 引起中断的原因或能发出中断申请的来源。 (1)一般的输入输出设备 键盘,打印机,鼠标等。 (2)数据通道中断源 软盘,硬盘等。 (3)实时时钟 用外部时钟定时发出中断信号,由CPU进行处理。

  5. 9.1 计算机中断系统 中断源(续) (4)故障源 • (a)外设故障 电源掉电,运行超限等。 • (b)计算机故障 内存出错,输入输出出错等。 (5)测试程序时设置的中断源 • 硬件断点:硬件调试器 • 软件断点:INT 21H • 调试程序应支持单步运行和断点运行

  6. 9.1 计算机中断系统 三、 中断系统功能 (1)实现中断及返回 (a)检测中断(每个指令最后一个时钟周期) 中断源发出中断申请,CPU中断开放情况下可检测到中断源。 (b)响应中断时要保护断点和现场 断点自动保护,现场要在中断服务程序中保护。 • 注意:在编制中断服务程序时一定要保护现场。

  7. 9.1 计算机中断系统 三、中断系统功能(续) (c)中断服务完成时要撤消中断申请信号 (d)中断处理完成后要恢复现场和断点,返回原程序继续执行。

  8. 9.1 计算机中断系统 (2)对中断进行控制 一般中断系统中计算机都可对中断申请进行控制。 (a)对中断申请进行控制 一个输入设备中断接口电路 三、中断系统功能(续)

  9. 三、中断系统功能(续) 说明: (1)外设准备好数据发EOC信号(负脉冲),把数据放到接口线上,同时置“1”中断申请触发器。 (2)执行指令 • MOV AL,01H • MOV DX,0162H • OUT DX,AL 则中断允许触发器为“1”,中断开放。此时INTR为高电平,向CPU发中断申请。

  10. 三、中断系统功能(续) 若禁止中断,则执行如下程序段: • MOV AL,00H • MOV DX,0162H • OUT DX,AL (3)INTR为高电平,若CPU中断开放(IF为“1”),则响应中断。在中断响应周期,INTA有效两次,读取中断类型码,清除中断申请触发器。 (4)在中断服务程序中读取外设数据 • MOV DX,0160H • IN AL,DX

  11. 三、中断系统功能(续) (b)对响应中断控制 • 8086CPU内的标志寄存器Flag中有一个中断标志位IF,由它控制CPU是否查询INTR引脚。 STI IF=1 允许中断 CLI IF=0 禁止中断

  12. 三、中断系统功能(续) (3)能实现优先权排队 (a)多个中断源申请中断时的优先权。 • 多个中断源申请中断时,CPU根据预先设定的优先权,先为高级中断服务,然后再为低优先级中断服务。 (b)高级中断能中断低级中断实现中断嵌套。 • CPU在处理中断时,如果有高级中断申请,则CPU停止现行中断处理,转去响应高级中断,然后再去处理原先的中断。如果有低级中断申请则不予响应。

  13. (4)寻找中断源 有中断申请则查找中断源,决定中断服务程序入口地址。 (a)预先约定 一有中断申请则转到固定地址执行中断服务程序。 电路简单,但一般只能为一个中断源服务。 (b)查询 在中断服务程序中查询中断源。 (c)应答方式(矢量中断) 响应中断时CPU发中断响应信号,中断源收到此信号发出中断类型码,CPU根据中断类型码决定中断服务程序入口地址。 三、中断系统功能(续)

  14. 三、中断系统功能(续) (5)中断优先权及中断源的查找 (a)软件查询 • CPU响应中断后用软件查询哪个外设申请中断。 • 查询程序: IN AL,20H LEA BX,BRNTAB CIRCLE: SHR AL,1(转下页)

  15. (接上页) 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、省硬件,不需要硬件排队电路。 缺点: 转至服务程序入口时间长。

  16. (b)链式优先权排队电路(如图所示) 三、中断系统功能(续)

  17. 说明: (1)每个接口都有一个中断允许输入IEI和中断允许输出IEO.只有IEI为高电平才允许该片发中断申请。 (2)IEO=IEI•HELP HELP表示该设备需要服务。 (3)每个接口芯片的中断申请输出为OC门,具有负逻辑的“线或”关系。 (4)响应中断时由INTA从接口读取中断矢量。 三、中断系统功能(续)

  18. (c)中断优先权编码电路(如图所示) 三、中断系统功能(续)

  19. 三、中断系统功能(续) 说明: (1)中断请求寄存器由IR0~IR7可分别引入8个外设的中断请求。 (2)优先权编码器把当前最高优先级的输入编码输出。 (3)中断服务寄存器记录正在服务的中断申请。 (4)中断申请的最高级与正在服务的最高级比较,只有申请级高于服务级才能提出中断申请(INT)。

  20. 一、8086的中断 8086CPU中断有两类: 软件中断——由指令执行引起的中断。 硬件中断——由外部请求引起的中断。 9.2 8086的中断方式

  21. 一、8086的中断 (1)外部中断 (a)可屏蔽中断 • 中断申请输入端为INTR,高电平有效。CPU在每一条指令最后一个T状态检测该引脚。在CPU内部该引脚受IF控制。CPU响应中断后INTA有效两次,从外设端口读取中断矢量,确定中断号。 (b)非屏蔽中断 • 输入引脚NMI上升沿有效。非屏蔽中断不受CPU控制,有申请一般都要响应。CPU响应非屏蔽中断转向2号中断(INT 2)。非屏蔽中断一般用于非常事件。PC/XT机中用于系统板上RAM奇偶错,I/O通道奇偶错和8087异常中断。

  22. 一、8086的中断 (2)内部中断 (a)DIV和IDIV指令 • 若除数为0或商超过寄存器所能表达的范围,则产生类型为0的内部中断。 (b)INT 指令 • 执行INT n指令引起的中断。 (c)INTO 指令 • 若OF=1则指令INTO引起类型为4的内部中断。 (d)单步中断 • 若TF=1则CPU每执行完一条指令产生类型为1的内部中断。

  23. 二、中断向量表 • 8086CPU在内存的前1KB(地址00000H~003FFH)建立一个中断向量表,存放256个中断服务程序的入口地址,每个地址占4个字节。前两个字节为中断服务程序偏移地址IP,后两个字节为段地址CS。中断号乘以4得到中断服务程序入口地址的地址。

  24. 三、中断响应过程 CPU得到中断类型码后,执行如下操作: (1)将类型码乘4,作为中断向量表的指针。 (2)把标志寄存器入栈。 (3)复制TF,清IF和TF,屏蔽新的INTR申请和单步中断。 (4)保护断点(CS和IP进栈)。 (5)从中断向量表中取中断服务程序入口地址,分别送CS和IP。 (6)按新地址执行中断服务程序。

  25. (1)功能简介 Intel8259是与8080/8085系列以及8086/8088系列兼容的可编程的中断控制器。 (1)具有8级优先权控制,通过级联可扩展至64级优先权控制。 (2)每一级中断都可以屏蔽和允许。 (3)中断响应时提供中断向量。 (4)中断申请可以由电平触发,也可由边沿触发。 (5)有多种工作方式。 9.3 中断控制器INTEL8259A 一、INTEL8259A结构与功能

  26. 一、INTEL8259A结构与功能 (2)内部结构

  27. 说明: (1) 8259A有8个外部请求输入端IR0~IR7,由中断请求寄存器IRR保存申请状态。 (2)中断服务寄存器ISR保存CPU正在处理的中断请求。 (3)中断屏蔽寄存器IMR对中断申请进行控制。 (4)中断优先级分析器决定中断申请的优先级。 (5)控制逻辑中含有两个寄存器组: 初始化命令寄存器组ICW1~ICW4 操作命令寄存器组OCW1~OCW3。 (6)级联逻辑控制8259A主从工作方式。 一、INTEL8259A结构与功能

  28. 一、INTEL8259A结构与功能 (3)8259A引脚及功能 (a)引脚图 (b)引脚功能 • D7~D0双向,三态数据线,可直接与系统总线相连。

  29. 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结构与功能

  30. 二、中断响应过程(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进栈

  31. 二、中断响应过程(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

  32. 三、8259A的工作方式 (a)设置优先级的方式 (1) 完全嵌套(固定优先级方式) (2)特殊完全嵌套 (3)优先级自动循环方式 (4) 优先级指定(特殊)循环方式 (b)中断结束的方式 (1)一般EOI命令 (2)特殊EOI命令(SEOI) (3)自动EOI命令 (AEOI) (c)中断屏蔽方式 (1)一般屏蔽 (2)特殊屏蔽 (d)中断触发:电平触发,沿触发,中断查询 (e)8259A的级联

  33. 四、8259A与计算机的连接 (1)单片工作方式的接口电路

  34. (1)数据线与控制信号对应连接。 (2)由74LS30(8输入的与非门)和74LS138(3-8译码器)对地址线进行译码决定端口地址,地址为? (3)8086使用低8位数据线与8259A传递信息。8086的A1接到8259的A0线上,使用偶地址。 (4)CAS2、CAS1、CAS0未接,SP/EN接正电源。 四、8259A与计算机的连接 说明:

  35. 四、8259A与计算机的连接 (2)由两片8259A级联方式管理15级向量中断。

  36. 四、8259A与计算机的连接 说明: (1)从片8259A的中断申请端INT接主片的IR2 (2)主片的SP/EN接+5V,从片的SP/EN接地,主从片的CAS2、CAS1、CAS0对应连接。 (3)主片的端口地址INTA1CS为020H ~ 03FH, 从片的端口地址INTA2CS为0A0~ 0BFH. (4)8086系统主从芯片都用偶地址传递信息。

  37. 五、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。

  38. A0 D7 D6 D4 D3 D2 D1 D0 D5 1 T2 T4 T3 T1 T7 T6 T5 T0 IR的编码,8259A自动填入 中断类型码的高5位 五、8259A的编程 (b)ICW2(设置中断类型号)

  39. 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 的序号

  40. 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

  41. 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允许中断

  42. 五、8259A的编程 (b)OCW2(设置EOI,SEOI,循环) (2)操作命令字

  43. 五、8259A的编程 (c) OCW3(特殊屏蔽设置,中断查询,读IRR,ISR) (2)操作命令字 D1(ERIS)做为D0(RIS)的开放位 D6(ESMM)做为D5(SMM)的开放位

  44. 五、8259A的编程 (a) 8259A初始化编程顺序 (3) 8259A初始化编程

  45. 五、8259A的编程 (b) IBM PC/XT 单级8259A初始化 (1)端口地址为020H和022H。 (2)接受8个中断请求信号为边沿触发。 (3)选择全嵌套方式,IR0为最高优先级,IR7为最低优先级。 (4)设定IR0中断号为08H. (3) 8259A初始化编程

  46. 五、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

  47. 五、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.

  48. 初始化程序段: 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的编程

  49. 五、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

  50. 【课后习题】 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的内容是什么?栈顶的三个字是什么?

More Related