您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 微机原理与接口技术(汇编)-第八章 中断技术
第八章中断技术、DMA控制器及定时器/计数器主要内容中断的基本原理中断的实现方法中断控制器8259ADMA控制器8237计数器/定时器8253中断的基本原理所谓中断,就是指当CPU正在执行程序时,外设(或其它中断源)向CPU发出请求,CPU暂停当前程序的执行,转向该外设服务(或称中断服务)程序,当中断服务程序运行结束后,返回原程序继续执行的过程。中断的基本原理中断过程包括:中断请求,中断判优,中断响应,中断处理,中断返回五个过程。中断优先权软件查询法是在CPU响应中断后,用软件查询以确定是哪些外设申请中断,并判断它们的优先权中断的基本原理硬件优先权排队电路中断优先权排队电路可用硬件编码器和比较器组成的优先权排队电路中断的基本原理硬件优先权排队电路链式优先权排队电路也称雏菊花链将所有的中断源排成一个链。各中断源在链中的前后顺序是根据中断源优先级别的高低来排列。排在链前面的优先级最高。中断的基本原理中断响应中断响应的条件:有中断请求信号中断请求没有被屏蔽中断是开放的CPU在现行指令执行结束时响应中断中断的基本原理中断响应关中断保存断点保护现场给出中断服务程序入口地址,并转入该服务程序恢复现场从中断返回80868088中断系统8086/8088的中断源8086/8088系统的中断源分为外部中断(中断源来自CPU外部)和内部中断(来自CPU内部的中断)内部中断除法溢出中断――0号中断单步中断――1号中断INT指令中断溢出中断――4号中断80868088中断系统外部中断非屏蔽中断非屏蔽中断的优先权高于可屏蔽中断。其中断请求信号是发生在NMI上的电压跳变(边沿触发)。可屏蔽中断出现在INTR线上的请求信号是电平触发的。只有当中断允许标志位IF为1时,CPU才能响应INTR的中断请求。如果IF为0,即使INTR端有中断请求信号CPU也不会响应。这种情况称为中断屏蔽。80868088中断系统中断向量表8086/8088系统支持最多256个中断,对应每一个中断,都有一个中断服务程序,该中断服务程序的入口地址称为中断向量。每个中断向量占用4个字节,前两个字节为服务程序的IP(偏移量),后两个字节为服务程序的CS(段地址)。8259A中断控制器8259A的结构及逻辑功能功能管理和控制80x86的外部中断请求实现中断判优提供中断向量屏蔽中断输入使用单片8259A可以管理8级中断,采用级联方式,最多可管理64级中断8259A中断控制器结构8259A中断控制器结构中断请求寄存器IRR优先级分析器中断服务寄存器ISR中断屏蔽寄存器IMR数据总线缓冲器读/写逻辑级联缓冲器8259A中断控制器8259A的引脚8259A中断控制器中断响应过程(1)外部设备在中断请求输入线(IR7~IR0)上发了中断请求,使中断请求寄存器IRR的相应位置位。(2)IRR的内容与IMR的内容相“与”,结果送给优先级分析器。中断优先级分析器把优先级最高的中断请求送到控制电路。(3)控制电路将接收到的中断请求向CPU输出INT信号。8259A中断控制器中断响应过程(4)若CPU是处在开中断状态,则在当前指令执行完以后,接收到INT信号,输出一个中断响应脉冲,进入第一个中断响应周期。(5)8259A的脚上收到脉冲信号,就将最高优先级所对应的IRR位清除,并将对应的ISR位置位。(6)CPU启动第二个中断响应周期,输出另一个脉冲,在这个周期8259A向数据总线输出一个中断向量码。(7)CPU读取该中断向量码,把它乘以4,得到中断服务程序入口地址,转入该中断服务程序。这样一个中断响应周期就完成了。8259A中断控制器8259A的编程8259A的初始化编程由CPU向8259A写初始化命令字ICW初始化命令字ICW的格式及功能如下1、ICW12、ICW2D7D6D5D4D3D2D1D0XXX1LTIMADISNGLIC4D7D6D5D4D3D2D1D0T7T6T5T4T3XXX8259A中断控制器3、ICW34、ICW4D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2IR1IR0D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOIμPM8259A中断控制器8259A的工作方式编程1、OCW1是中断屏蔽命令字,D7~D0分别控制对应的IRQ7~IRQ0上的中断请求被屏蔽还是开放。“1”是屏蔽,“0”是开放。2、OCW2是用来设置中断优先级循环方式和发送EOI命令。通过偶地址写OCW2且命令字的D4D3位都是“0”,标志着是对OCW2设置,若D4D3位是01则是OCW3,D4为1则是ICW1。D7D6D5D4D3D2D1D0RSLEOI00L2L1L0D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M08259A中断控制器3、OCW3用于控制读中断状态、查询及屏蔽方式,此时要求8259A的引脚A0为0即偶地址。例:设8259A初始化后屏蔽IR2,设置特殊屏蔽方式,允许开放优先级低的中断。设端口地址为20H和21H。D7D6D5D4D3D2D1D0XESMMSMM01PRRRIS8259A中断控制器8259A的操作方式查询方式中断屏蔽缓冲模式中断嵌套模式中断优先权旋转中断结束命令读8259A状态8259A的级联可编程DMA控制器8237A利用DMA方式传送数据时,数据的传送过程完全由硬件控制,这种电路称为DMA控制器(DMAC)。需要数据传送时,DMAC向CPU提出申请,CPU让出总线控制权,由DMAC直接控制地址总线、数据总线和控制总线,让存储器与高速的外部设备直接交换数据,CPU不再干预,这样大大减少了中间过程,提高了数据传送速度。可编程DMA控制器8237A8237A的结构和功能引脚信号可编程DMA控制器8237A内部结构8237A有4个独立的DMA通道,24个内部寄存器。可编程DMA控制器8237A内部寄存器•基址寄存器和当前地址寄存器•基字节计数寄存器和当前字节计数寄存器•暂时地址寄存器•状态寄存器•命令寄存器•暂存寄存器•方式寄存器•屏蔽寄存器•请求寄存器8237A的先/后触发器此触发器保证16位寄存器的读写操作,以先低字节后高字节的顺序操作。可编程DMA控制器8237A8237A的工作方式单字节传送方式DMA传送时,仅传送一个字节。块传送方式块传送方式由一个DMA请求启动传送整个一个数据块,在整个数据传送期间,系统总线一直被DMAC所控制,每传送一个数据,计数寄存器的值减1。请求传送方式在请求传送方式下8237A被编程为连续传送,直至遇到T/C或外部来的为止,或者直到DREQ不再有效为止。级联方式多个8237A进行级联时,将其中一个DMAC作为主片,其他作为从片。EOP可编程DMA控制器8237A8237A初始化编程设置方式寄存器PC机BIOS在初始化时,将方式寄存器初始化为单字节传送方式、地址递增、通道0为读传送、自动预置(方式字为58H)、通道1、2、3为校验传送、禁止自动预置,其方式字为41H、42H、43H。设置命令寄存器初始化必须设置命令寄存器,以确定其工作时序、优先级方式、DREQ和DACK的有效电平及是否允许工作等。清除先/后触发器先/后触发器是一个指针,当它为0时,对低字节进行操作,当它为1时,对高字节进行操作。可编程DMA控制器8237A设置地址和字节计数器8237A每个通道有四个16位的寄存器。这四个寄存器是基地址寄存器和当前地址寄存器以及基本字节计数寄存器和当前字节计数寄存器。清除屏蔽寄存器屏蔽寄存器是一个4位寄存器,每一位代表一个通道。当它为1时,向该通道的DMA请求被禁止;为0时,则允许。可编程定时器计数器82538253的结构和功能8253采用N沟道MOS工艺制成,有三个独立的16位计数器,只需要一组+5V电源。8253的内部结构可编程DMA控制器8237A8253的内部结构数据总线缓冲器它是8位双向三态缓冲器,可直接连接到数据总线上。初始化编程时,CPU写入8253的方式控制字和计数初值、CPU从计数器中读取的当前计数值都经这里传送。读/写控制逻辑产生相应的控制信号,来选择读/写操作的端口及控制数据的传送方向。计数器0、1、2三个计数器的内部结构相同,但相互独立。计数器从时钟输入端接收时钟脉冲或事件计数脉冲。控制字寄存器控制字寄存器是8位的,只能写不能读。写入的内容包括计数器的工作方式或计数器的初值可编程定时器计数器82538253的引脚信号8253的功能定时计数可编程定时器计数器82538253的方式控制字(1)SC1、SC0:用于选择计数器SC1SC0选择的计数器00计数器001计数器110计数器2(2)RW1、RW0:读/写控制位RW1RW0操作00计数器锁存01读/写低字节10读/写高字节11先读/写低字节,后读/写高字节D7D6D5D4D3D2D1D0SC1SC2RW1RW0M2M1M0BCD可编程定时器计数器8253(3)M2、M1、M0:方式选择位M2M1M0方式选择000方式0001方式1X10方式2X11方式3100方式4101方式5(4)BCD:选择计数格式。BCD=1,十进制计数。BCD=0,二进制计数。可编程定时器计数器82538253的工作方式方式0——计数结束产生中断在这种方式下,写入控制字之后,输出端OUT为低电平作为初始电平,并且在计数值到达0之前一直保持低电平。当计数到达0时,输出端OUT为高电平,并且一直保持高电平,除非写入新的计数值。可编程定时器计数器8253方式1—可重复触发的单稳态触发器写入控制字之后,输出端OUT以高电平作为起始电平,计数初值送到初值寄存器后,再经过一个时钟周期,便送到计数执行部件。另一方面,门控信号GATE上升沿到来时,边沿触发器触发,下一个时钟脉冲时,输出端OUT变为低电平,并在计数到达0以前一直保持低电平。可编程定时器计数器8253方式2一分频器写入控制字之后,输出端OUT变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数器初值被写到计数执行部件,然后计数执行部件作减1计数。减到1(不是减到0)时,输出OUT变为低电平。可编程定时器计数器8253方式3—方波发生器写入控制字之后,输出端OUT出现高电平作为起始电平。计数初值送到初值寄存器后,下一个时钟脉冲到来时,计数执行部件获得初始计数值,并开始作减1计数。当计数计到一半时,输出变为低电平,计数器继续作减1计数,计数到终值时,输出变为高电平,从而完成一个周期。之后,马上自动进入下一个周期。由此不断进行下去,产生周期为N个时钟脉冲宽度的输出。可编程定时器计数器8253方式4-软件触发的选通写入控制字之后,输出端OUT变为高电平作为初始电平,计数初值送到初值寄存器,再经过一个时钟周期,计数执行部件获得计数初值,并开始计数。当计数器减到0的时候,输出端OUT变为低电平,此低电平持续一个时钟周期,然后又自动变为高电平并一直维持高电平。一般将此负脉冲作为选通信号。当计数值N被送到计数初值寄存器后,在下一个时钟周期,计数初值被送到计数执部件,之后,计数执行部件作减1计数,又经过N个时钟周期后,才输出一个负脉冲作为选通脉冲。可编程定时器计数器8253硬件触发的选通写入控制字之后,输出端OUT出现高电平作为起始电平。写入计数值之后,必须有门控信号GATE的上升沿到来,才在下一个时钟周期将计数初值送到计数执行部件。此后,计数执行部件作减1计数,计数到达0的时候,输出端出现一个宽度为1个时钟周期的负脉冲,然后又自动变为高电平,并将持续不变。此输出负脉冲可以用作选通脉冲,它是通过硬件电路产生的门控信号上升沿触发后得到的,所以叫硬件触发的选通脉冲。可编程定时器计数器82538253的初始化编程系统初始化时,由BIOS对8253进行初始化,并进行检查,程序如下:1.对计数器0的初始化CLI;关中断MOVAL,36H;选择计数器0
本文标题:微机原理与接口技术(汇编)-第八章 中断技术
链接地址:https://www.777doc.com/doc-3162007 .html