北京理工大学微机原理课件 第6章-输入输出和中断技术()_第1页
北京理工大学微机原理课件 第6章-输入输出和中断技术()_第2页
北京理工大学微机原理课件 第6章-输入输出和中断技术()_第3页
北京理工大学微机原理课件 第6章-输入输出和中断技术()_第4页
北京理工大学微机原理课件 第6章-输入输出和中断技术()_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章输入输出和中断技术第6章节目录6.1输入输出系统概述6.2简单接口电路6.3输入输出的控制方式6.4中断技术6.5可编程中断控制器8259A章第6章作业7章6.1输入输出系统概述处理器和主存储器之外的部分统称为输入输出系统,它包括输入输出设备、输入输出接口和输入输出软件。计算机在运行过程中所需要的程序和数据由外设输入,而结果要输出到外设去。接口输入输出系统电源CPU内存内存接口键盘、鼠标、显示器打印机、声音输入输出、图形输入、视频输入输出用户交互接口外存接口磁盘机磁带机光盘机通信接口终端MODEM电传机ADCDAC数字化仪器测控接口系统总线1、I/O接口要解决的问题一、I/O接口的基本功能速度匹配问题 外设与CPU相比,速度差距很大。信号电平和驱动能力问题 CPU的信号电平05V,而外设的电平范围宽,需要驱动功率大。信号形式匹配问题 外设的信号可以是数字量、开关量、模拟量等。信息格式问题 外设可以是串行信号、并行信号等。时序配合问题 外设有自己的时序与控制逻辑,与CPU不一致。I/O地址译码与设备选择把选中的外设与总线相接,未选中的外设与总线隔离(高阻态)

信息的输入与输出通过接口可以向外设输入或输出数据。信息转换

信息格式变换、电平转换、码制转换、传送管理及联络控制等功能。命令、数据和状态的缓冲与锁存接口电路有信息缓冲能力。可以解决速度匹配问题,实现CPU与外设之间的同步。2、I/O接口的功能串行接口的功能1、发送时将并行数据转换为串行。2、接收时相反。3、发送时将TTL电平转换为-15V--+15V。4、接收时相反。5、异步发送与接收。接口外设CPU计算机DBWRRDINTRCS译码电路AB二、I/O接口的编址方式1、CPU与I/O接口通信是通过一组寄存器实现的。

I/O信息的三种类型:数据、命令、状态。传送这三类信息的通道分别称为:

数据端口(I、O)、命令端口(O)、状态端口(I)2、不同接口具有的端口数各不相同,计算机中为每一个端口都赋予一个唯一编号,称为端口地址(或端口号、接口地址)。端口有两种编址方式:统一编址和独立编址。接口外设CPU计算机命令端口数据端口状态端口DBWRRDINTRCS译码电路AB每个端口有自己的地址编号

①统一编址把外设端口与内存统一进行编址。各占据统一地址空间的不同部分。0地址空间(共1MB)内存地址(960KB)I/O地址(64KB)FFFFFHEFFFFHF0000H端口的两种编址方式:统一编址和独立编址优点:指令统一,灵活;访问控制信号统一。缺点:内存可用地址空间减小

②独立编址外设地址空间和内存地址空间相互独立。优点:内存地址空间不受I/O编址的影响缺点:需要专用I/O指令,功能较少应用:Z-80系列和x86系列均采用此方式。如:存储器读写用MOV指令

I/O接口读写用IN或OUT指令8088/8086CPU的I/O编址方式采用I/O独立编址方式(但地址线与存储器共用)地址线上的地址信号用IO/M

来区分:IO/M=1时为I/O地址,IO/M=0时为存储器地址。I/O操作只使用20根地址线中的16根:A15

~A0可寻址的I/O端口数为64K(65536)个I/O地址范围为0~FFFFHIBMPC只使用了1024个I/O地址(0~3FFH)三、8086/8088I/O端口访问

四、8086/8088

I/O端口地址的译码2、I/O接口地址译码电路的设计原理与存储器译码电路的设计思路一样,由A0A15与IO/M信号一起进行译码即可。1、根据系统提供的三总线信号为A0~A19、D0~D7、RD、WR、IO/M等设计译码电路并与系统进行连接。A15~A12与非门IO/MA15~A12与非门IO/M用于存储器芯片选通用于I/O芯片选通8088最小模式下的原理图

8284A地址总线(20根)READYRESETALEA19~A8AD7~AD0地址锁存储器8282(三片)DENDT/RIO/MWRRDHOLDHLDAINTRINTACLK收发器8286(一片)数据总线(8根)控制总线READYRESET8088MN/MX+5VA0~A19D0~D7存储器系统I/O接口节6.2简单接口电路数据线控制线状态线DBCBAB数据输入寄存器(or三态门)数据输出寄存器(锁存器)状态寄存器(or三态门)命令寄存器译码电路控制逻辑一、接口电路的基本结构CPU外设

数据输入/输出寄存器——暂存输入/输出的 数据命令寄存器——存放控制命令,用来设定接 口功能、工作参数和工作方式。状态寄存器——保存外设当前状态,以供 CPU读取。1、接口电路中寄存器的作用数据输入接口必须具有三态输出能力,以便与总线挂接外设有数据保持能力时—可用三态门实现外设无数据保持能力时—用三态输出的锁存器实现数据输出接口常用锁存器实现2、数据输入/输出接口电路的要求

三态门:高电平、低电平、高阻态通常一个器件中包含8个三态门常用芯片:74LS244应用例子:开关接口二、简单数据输入接口设计。。。。74LS244I0I3。。。。E1数据总线E1=0输入E1=1高阻数据总线……CS1CS2地址译码器三、简单的输入接口举例接口电路图如下:83FCH~83FFH译码器锁存器:由D触发器构成(具有锁存功能)通常一个器件包含8个D触发器常用芯片:

74LS27374LS374四、简单的输出接口举例SCPDiQi0XX01↑111↑00S74LS273MOVDX,0FFFFHMOVAL,01000001BOUTDX,AL.........11+5VRD0|D7CPQ0Q7...D0~D774LS273R▪▪▪▪▪▪A0A1A7A8A9A15IOW&&≥74LS273可以直接做输出接口,但不能直接做输入接口(不能直接连接CPU总线)。74LS374既可做输入电路,也可做输出电路。OEQ0D0D1Q1Q2D2D3Q3GNDVCCQ7D7D6Q6Q5D5D4Q4CP1011155120DiOECPQi101000xx1高阻图6-774LS374引线图和真值表(D)CPQ1Di1(CP)OEQi图6-874LS374内部结构&A15A14A13A12A11A10A9A8&A7A6A5A4A3A2A1A0111≥1LOWD0~D7CPQ0Q1Q6Q7OED0~D774LS374用作输出接口74LS374用作输入接口D0~D7CPD0D1D7OED0~D7译码电路A0~A15IOR外设选通五、输入/输出接口综合应用例子根据开关状态在7段数码管上显示数字或符号共阳极7段数码管结构用74LS273作为输出接口,把数据送到7段数码管用74LS244作为输入口,读入开关K0~K3的状态当开关的状态分别为0000~1111时,在7段数码管上对应显示’0’~’F’当.gfedcba的值为C0H(11000000)时,显示0O1I1O2I2O3I3O4I4E1

K0~K3+5VGG2AG2BCBA≥174LS244D0Q0|Q1D7Q2Q3Q4CPQ5Q6Q7

abcdefgDP7406反相器74LS273Rx8≥174LS138D0~D7IOWIORY0Y1&≥1A7~A4A15~A8A3A2A1A0D0D1D2D3译码器Rx4F0H=0000000011110000F1H=0000000011110001

符号形状7段码.gfedcba符号形状7段码.gfedcba’0’00111111’8’01111111’1’00000110’9’01100111’2’01011011’A’01110111’3’01001111’B’01111100’4’01100110’C’00111001’5’01101101’D’01011110’6’01111101’E’01111001’7’00000111’F’01110001相应程序段如下: ……Seg7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71H …… LEA BX,Seg7 ;取7段码表基地址 MOV AH,0GO:

MOV DX,0F1H ;开关接口的地址为F1H IN AL,DX ;读入开关状态

AND AL,0FH ;保留低4位

MOV SI,AX ;作为7段码表的表内位移量

MOV AL,[BX+SI] ;取7段码

MOV DX,0F0H ;7段数码管接口的地址为F0H OUT DX,AL JMP GO节6.3输入输出的控制方式

无条件传送查询式传送中断方式传送直接存储器存取(DMA,DirectMemoryAccess)主机与外设之间数据传送的控制方式有以下四种:一、无条件传送方式适用于总是处于准备好状态的外设以下外设可采用无条件传送方式:开关发光器件(如发光二极管、7段数码管、灯泡等)继电器步进电机优点:软件及接口硬件简单缺点:只适用于简单外设,适应范围较窄A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15≥1&≥1IORD0图6-12开关K通过输入接口与系统的连接K+5V10K二、查询方式适用于外设并不总是准备好,而且对传送速率、传送效率要求不高的场合。CPU在与外设交换数据前必须询问外设状态——“你准备好没有?”对外设的要求:应提供设备状态信息对接口的要求:需要提供状态端口优点:软件比较简单缺点:CPU效率低,数据传送的实时性差,速度较慢。CPU接口外设系统总线状态数据控制图6-13查询工作方式示意图取外设状态外设准备就绪否传送数据NY传送完否NY结束图6-14单一外设时查询方式流程图1号外设准备就绪NY对1号外设服务2号外设准备就绪NY对2号外设服务3号外设准备就绪NY对3号外设服务n号外设准备就绪NY对n号外设服务图6-15多个外设时的查询工作方式流程图三、中断方式

CPU无需循环查询外设状态,而是外部设备在需要进行数据传送时才中断CPU正在进行的工作,让CPU来为其服务。即CPU在没有外设请求时可以去做更重要的事情,有请求时才去传输数据,从而大大提高了CPU的利用率。优点:CPU效率高,实时性好,速度快。缺点:程序编制较为复杂。主程序IP继续执行主程序执行中断服务子程序压栈出栈返回主程序IP(下)6.3.4DMA传输

前三种I/O方式都需要CPU作为中介:

1)软件方面:外设与内存之间的数据传送是通过 CPU执行程序来完成的;

2)硬件方面:I/O接口和存储器的读写控制信号、地 址信号都是由CPU发出的(总线由CPU控制)。CPU外设外设存储器缺点:程序的执行速度限定了传送的最大速度 (约为几十KB/秒)。

DMA传输:外设直接与存储器进行数据交换,CPU不再担当数据传输的中介者;总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。CPU外设外设存储器优点:数据传输由DMA控制器即硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率(可达几MB/秒)DMA传送原理示意图

①系统总线CPUDMAC存储器外设AENIOWMEMWMEMRIORMEMWMEMRIOWIORAENHOLDHLDADRQDACK②③④⑤AENIOWIORMEMWMEMR①外设发出DMA请求信号DRQ②DMAC向CPU申请总线HOLD③CPU响应,释放总线控制权,并发出HLDA信号④DMAC得到总线控制权,并向外设发出响应信号DACK⑤由DMAC发出各种控制信号,控制外设与存储器之间的数据传送⑥数据传送完后,DMAC撤销HOLD信号⑦CPU释放HLDA信号,并重新控制总线⑥⑦1)当外设准备好,可以进行DMA传送时,外设向DMA控制器发出“DMA传送请求”信号(DRQ);DMA控制器的工作过程:4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK;3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个动作:

①CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。②CPU向DMA控制器发出“总线响应”信号(HLDA)。2)DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线;5)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送;例如,向I/O接口发出读信号,同时往地址总线上发出存储器的地址和存储器写信号和AEN信号,即可从外设向内存传送一个字节。

6)DMA控制器自动修改地址和字节计数器,并判断是否需要重复传送操作。当规定的数据传送完后,DMA控制器就撤销发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控制总线。

节6.4中断技术6.4.1中断的基本概念正在看书电话铃响接电话继续看书实际场景执行程序事件发生事件处理继续执行程序计算机中断处理中断请求及响应中断返回中断的定义CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。与子程序的区别?只有执行到CALL时才调用子程序,而中断是随机的。中断源引起CPU中断的事件——中断源。例如:外设——请求输入输出数据,报告故障等事件——掉电、硬件故障、软件错误、非法操作、定时时间到等。中断源分为:外部中断、内部中断内部中断:CPU内部执行程序时自身产生的中断(如INT指令、溢出、被0除等)外部中断:CPU以外的设备、部件产生的中断

8086/8088的外部中断信号:INTR、NMIINTR——可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。NMI——非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。Vcc(5V)A15A16/S3A17/S4A18/S5A19/S6SS0(HIGH)MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)IO/M(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8088地A14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLK地为何计算机中要引入中断?避免了CPU不断检测外设状态的过程,提高了CPU的利用率。实现对特殊事件的实时响应。如多任务系统操作系统中:缺页中断设备中断各类异常实时钟,。。。等中断过程五个步骤:中断请求中断判优(有时还要进行中断源识别)中断响应中断服务中断返回以下以外部中断为主介绍这五个步骤。1)中断请求外设接口(中断源)发出中断请求信号,送到CPU的INTR或NMI引脚;中断请求信号:边沿请求,电平请求

例如,NMI为边沿请求,INTR为电平请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。在8086/8088系统中,外设的中断要经过8259A可编程中断控制器(PIC)的排队判优后向CPU发出。CPUINTRINTAIR0IR1IR7D0~D7INTAINTCSA0RDWRD0~D7RDWR。。。8259ASP/ENCAS0CAS1CAS2中断源2)中断判优多个中断源产生中断,CPU首先为谁服务? ——中断优先级排队问题。中断优先级控制要处理两种情况:对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理;对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断——即允许中断嵌套。中断优先级的控制方法硬件判优——链式判优、并行判优(中断向量法)软件判优——顺序查询中断请求,先查询的先服务(即先查询的优先级别高)通常将中断判优与中断源识别合并在一起进行处理。x86系统中,这项任务由PIC和CPU共同完成。软件判优CPUD0~D7INTR并行输入接口≥1中断请求寄存器IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7图6-18软件判优的结构原理图断点保护IRQ0IRQ1IRQ7中断返回YYYNNN中断源0的中断服务程序中断源1的中断服务程序中断源7的中断服务程序图6-19软件中断优先权查询流程图中断矢量法:为不同的中断源提供不同的中断类型码(中断向量码),即为每一个中断分配一个编号,CPU根据类型码确定中断源。(8086/8088即采用此种方法)硬件判优链式判优:将中断源构成一个链。INTAinCPUINTAINTR外设1外设2外设接口1菊花链逻辑电路外设接口2外设3外设接口3≥1菊花链逻辑电路菊花链逻辑电路┇IREQIREQIREQ中断确认链式判优电路原理图(教材图6.20)

INTAinINTAin中断确认中断确认链中越往左,中断源的级别越高。菊花链逻辑电路INTAinIREQINTR&=1

≥1INTAoutDB三态门中断向量码E外设接口中断确认菊花链逻辑电路3)中断响应在每条指令的最后一个时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应中断:当前指令执行完。对INTR,还应满足以下条件当前指令是STI和IRET,则下条指令也要执行完。当前指令带有LOCK、REP等指令前缀时,则把它们看成一个整体,要求完整地执行完;对INTR,CPU应处于开中断状态,即IF=1;当前没有复位(RESET)和保持(HOLD)信号。若NMI和

INTR

同时发生,则首先响应NMI。CPU中断响应时,要做下述三项工作:向中断源发出/INTA中断响应信号;断点保护,包括CS、IP和PSW(FLAGS)。这主要是保证中断结束后能返回被中断的程序。获得中断服务程序首地址(入口地址)。如何得到中断处理程序的首地址?固定入口法中断向量法(8086采用的方法)4)中断处理(中断服务)中断服务子程序特点为“远”过程(类型为FAR)要用IRET指令返回中断服务子程序要做的工作保护现场(PUSHreg’s)

开中断(STI)

进行中断处理

关中断(CLI)恢复现场(POPreg’s)

中断返回(IRET)

5)中断返回执行中断返回指令IRETIRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSP进入中断服务程序时IPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG中断返回后6.4.28088的中断系统与中断有关的控制线为:NMI、INTR、/INTA8088系统的中断源内部中断除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。单步中断:类型号1,TF=1时产生(当前指令需执行完)断点中断:类型号3,这是一个软件中断,即INT3指令。溢出中断:类型号4,这是一个软件中断,即INTO指令。软件中断:即INTn指令,类型号n(0-255)。外部中断非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。一、8086/8088中断源类型NMIINTR中断逻辑软件中断指令溢出中断除法错单步中断非屏蔽中断请求中断控制器8259APIC8086/8088CPU内部逻辑断点中断可屏蔽中断请求n430128088系统采用中断类型(向量)码来识别不同的中断源,每个中断源都有一个与它相对应的中断类型码。溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值软件中断的类型码由指令给出可屏蔽中断的类型码由PIC给出CPU响应INTR中断时,会产生两个中断响应总线周期,要求PIC在第2个中断响应总线周期把中断类型码放到数据总线上,供CPU读入。二、中断向量表(IVT)

存放各类中断的中断服务程序的入口地址(段和偏移);表的地址位于内存的00000H~003FFH,共256个入口;每个入口占用4Bytes,低字为段内偏移,高字为段基址;根据中断类型号获得中断服务程序入口的方法:(n为中断类型号)中断向量在IVT中的存放地址=n×4例如:中断类型码为21H,其中断向量存放在0000H:0084H(21H*4=84H)开始的4个字节单元中。CS段基址IP偏移量CS段基址IP偏移量CS段基址IP偏移量CS段基址IP偏移量CS段基址IP偏移量CS段基址IP偏移量CS段基址IP偏移量中断类型0的中断向量中断类型1的中断向量中断类型2的中断向量中断类型3的中断向量中断类型4的中断向量中断类型32的中断向量中断类型255的中断向量00000H00004H00008H0000CH00010H00014H00080H00084H003FCH003FFH6-23中断向量表结构中断处理程序STIPUSHDS…IRETINT4AHNOPF0类型49H中断向量0600类型4BH中断向量180:1240:1250:1260:1270:1280:1290:12A0:12B0:12C0:12D0:12E0:12F②1806F000IPCS③F000:1806④⑤从堆栈中弹出FLAG、CS、IP向量计算=4AH4=128H①FLAG、CS、IP入栈等三、软中断的执行过程四、8086/8088CPU的中断响应过程

内部中断响应过程

无中断响应周期中断类型码固定或由指令(INTn)给出响应过程步骤: ①将类型码乘4,计算出中断向量的地址 ②标志寄存器入栈

清除IF、TF,即屏蔽新的INTR和单步中断

④保存断点,将断点处的CS压栈

⑤将断点处的IP压栈 ⑥(IP)=(n*4+1):(n*4+0) ⑦(CS)=(n*4+3):(n*4+2) ⑧执行中断服务程序。中断响应过程(续)外部中断响应过程非屏蔽中断,与内部中断响应过程类似

可屏蔽中断(时序见图6.24)

①/INTA(1),PIC进行优先级排队判优处理 ②/INTA(2),PIC把中断类型码放到DB上,由CPU读入

③压栈FLAG ④清除IF、TF⑤CS入栈

IP入栈 ⑦(IP)=(n*4+1):(n*4+0)

⑧(CS)=(n*4+3):(n*4+2)T1T2T3T4T1T2T3T4中断类型码CLKALELOCKINTAD0~D7第一个INTA总线周期第一个INTA总线周期图6-248086/8088对INTR的中断响应时序·······IRET1、FLAGS、CS、IP入栈2、清除IF、TF3、转中断服务处理程序INTHAND(通过中断矢量表)产生中断1、FLAGS、CS、IP出栈2、返回断点,继续执行下一条指令中断返回····INTHAND:;PROGRAMINEXECUTION可屏蔽中断的执行过程8088系统中各中断的优先级优先级从高到低顺序如下:内部中断NMIINTR单步中断节6.5可编程中断控制器8259APIC,ProgrammableInterruptController可对8个中断源实现优先级控制

可扩展至对64个中断源实现优先级控制

可编程设置不同工作方式根据中断源向x86提供不同中断类型码可编程芯片:可以用程序设置芯片的工作方式,控制其工作过程。

A0:是8259A内部寄存器的选择信号。它与/WR、/RD、 /CS等信号相配合,对不同的内部寄存器进行读写。 使用中,通常接地址总线的A1或A0等。

INT:8259A中断请求输出信号,直接接到CPU的INTR输 入端。/INTA:中断响应输入信号。在中断响应过程中CPU的中断 响应信号由此端进入8259A。

CAS0---CAS2:级联控制线。当多片8259A级联工作时,其 中一片为主片,其他均为从片。

主片8259A:CAS0---CAS2为输出;

从片8259A:CAS0--CAS2为输入。当某从片提出中断请求时,主片通过CAS0--CAS2送出 相应的编码给从片,使从片的中断被允许。

SP/EN:为双功能引线。 当8259A工作在缓冲模式时,它为输出,用以控制缓冲器的传送方向: 当数据:CPU8259A时,SP/EN输出为高电平; 当数据:8259ACPU时,SP/EN输出为低电平。 在8259A工作在非缓冲模式时,它为输入,用于指定8259A是主片还是从片:

SP=1的8259A为主片,SP=0的8259A为从片。只有一个8259A时,它应接高电平。IR0--IR7:为中断请求输入信号,与外设的中断请求线相连。上升沿或高电平(可通过编程设定)时表示有中断请求到达。CPUINTRINTAIR0IR1IR7D0~D7INTAINTCSA0RDWRD0~D7RDWR。。。8259ASP/ENCAS0CAS1CAS2级连电路连接方法6.5.18259A的内部结构数据总线缓冲器读/写控制电路级联缓冲/比较器D0~D7CAS0CAS1CAS2SP/ENRDWDA0CS内部控制逻辑电路当前终端服务寄存器(ISR)优先权判别电路中断请求电路(IRR)中断屏蔽寄存器(IMR)内部总线INTINTA图6-278259A内部结构框图8259A的内部结构中断请求寄存器IRR保存从IR0~IR7来的中断请求信号,某位为1表示对应的IRi有中断请求。中断服务寄存器ISR

保存所有正在服务的中断源,某位为1表示对应的IRi中断正在被服务

,可能同时有几位为1。中断屏蔽寄存器IMR存放中断屏蔽字,某位=1表示对应的IRi输入被屏蔽。中断优先权判别电路

确定是否向CPU发出中断请求,中断响应时确定ISR的哪位应置位及把相应中断的类型码放到数据总线上

6.5.28259A的工作过程8259A对外部可屏蔽中断请求的处理过程如下:当某IRi有效时,IRR相应位置1。若有效的IRi未被屏蔽,则向CPU发出中断请求。若CPU处于开中断状态,则在当前指令执行完后,发/INTA。检测到第1个/INTA信号后,置ISRi=1,IRRi=0。检测到第2个/INTA信号后,把ISRi=1中最高优先级的中断类型码放到DB上。若工作在AEOI方式,在第2个/INTA结束时,使ISRi复位;否则由CPU发出EOI命令使ISRi复位。6.5.38259A的工作方式8259A的工作方式:中断触发方式屏蔽中断源的方式中断优先方式中断嵌套方式中断结束处理方式

级联工作方式一、中断触发方式边沿触发

IRi出现上升沿表示有中断请求

电平触发

IRi出现高电平表示有中断请求,但应及时撤除高电平,否则可能引起第二次中断。在第1个/INTA结束前,IRi必须保持高电平。

二、屏蔽中断源的方式普通屏蔽方式:IMR屏蔽字决定了允许或禁止某位IRi所对应的中断:

IMi=1

禁止,IMi=0

允许(即正常屏蔽方式)。特殊屏蔽方式:提供了允许较低优先级的中断能够得到响应的特殊手段。原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时,除IR6外的所有中断请求均能得到响应。特殊屏蔽方式中只能用SEOI命令结束中断。三、中断优先方式中断优先方式

两类优先级控制方式:固定优先级和循环优先级固定优先级方式所有中断请求IRi的中断优先级固定不变优先级排列顺序可通过编程改变加电后8259A的默认方式,默认优先级顺序从高到低为IR0~IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低级最高级最高级最低级优先级IR7IR6IR5IR4IR3IR2IR1IR0默认优先级优先级可编程改变

循环优先级方式

中断源轮流处于最高优先级,即自动中断优先级循环初始优先级顺序可用编程改变某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级。

21076543最高级最低级IR7IR6IR5IR4IR3IR2IR1IR001000000IR4的服务结束以后IR7IR6IR5IR4IR3IR2IR1IR076543210最低级最高级ISR内容IR4的服务结束以前01010000ISRi在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。8259A有两种中断嵌套方式:普通全嵌套方式(默认方式)

一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。特殊全嵌套方式

一中断正被处理时,允许同级或更高优先级的事件打断当前的中断处理过程而被服务。四、中断嵌套方式仅用于多个8259A级连时的主8259A。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR3发生中断,并获得服务一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式与特殊全嵌套方式的区别

去CPU五、中断结束处理方式当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。使ISRi=0是通过向8259A发出中断结束命令(EOI命令)实现的。三种EOI命令自动EOI(AEOI)——(自动EOI方式)非指定EOI(NSEOI)——(正常EOI方式)指定EOI(SEOI)——(特殊EOI方式)

AEOI:在第2个/INTA结束时,由8259A使ISRi自动复位;因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式NSEOI:由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。用于普通全嵌套方式SEOI:由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。

用于特殊屏蔽方式中断服务程序┇向从PIC发EOI命令读从PIC的ISR全0?向主PIC发EOI命令YIRET恢复现场N特殊全嵌套方式下的EOI处理只有当从8259A的中断全部处理完后,才能向主8259A发EOI命令。六、级联工作方式单片8259A可支持8个中断源;采用多片8259A级联,可最多支持64个中断源。 n片8259A可支持8*(n-1)+8-(n-1)=7n+1个中断源;级联时只能有一片8259A为主片,其余的均为从片;涉及到的8259A引脚包括:CAS0---CAS2SP/ENIRiINT

主片8259AIR0IR1IR2IR3IR4IR5IR6IR7INTINTRINTAINTA

从片1IR0IR1IR2IR3IR4IR5IR6IR7INTINTA

从片8IR0IR1IR2IR3IR4IR5IR6IR7INTINTA···级连电路连接方法主片、从片有不同的地址;主片、从片分别进行编程。6.5.48259A的编程使用8259A的控制命令分为初始化命令字ICWICW1~ICW4向8259A写入ICW的过程称为初始化编程操作命令字OCW

OCW1~OCW3向8259A写入OCW的过程称为操作方式编程8259A内部寄存器的寻址方法/CS/RD/WRA0D4D3读写操作010000写OCW2写OCW3写ICW1写ICW2,ICW3,ICW4,OCW1(顺序写入)00101x1xx00101xx读出IRR、ISR(由OCW3区分)读出IMR需要/CS、A0、/RD、/WR和D4、D3的配合内部寄存器的访问方法如下表:8259A的初始化顺序

8259的初始化流程注意次序不可颠倒!写ICW1写ICW2级连?写ICW3需ICW4?写ICW4NNYY8259A的控制命令字初始化8259A必须从ICW1开始写ICW1意味着重新初始化8259A写入ICW1后,8259A的状态如下:清除ISR和IMR(全0);将中断优先级设成初始状态:IR0最高,IR7最低;设定为一般屏蔽方式;采用非自动中断结束方式;状态读出逻辑预置为读IRR。ICW1——初始化字LTIM:触发方式=1高电平触发=0上升沿触发SNGL:级连控制=1单片=0级连IC4:ICW4控制=1要写ICW4=0不写ICW4(默认ICW4为全0)A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x x 1LTIM xSNGL

IC4如要求上升沿触发、单片8259A,写ICW4,则ICW1=?Single?LevelTriggeredMode?00010011B=13HICW2——中断向量码T7~T3:中断向量码的高5位T2~T0:最低3位为中断源的序号IRn000~111分别对应IR0~IR7由8259A根据中断源的序号自动填入

例如: 若ICW2命令字为48H,则IR0的中断向量码为48H,IR7的中断向量码为4FH,等等。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7

T6 T5 T4 T3 x x

xICW3——级连控制字

主片的级联控制字

Si=1对应IRi线上连接了从片

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7

S6 S5 S4 S3 S2 S1

S0从片的级联控制字

ID2~ID0标识码,说明本从片连接到主片的哪个IR引脚上。000~111分别对应IR0~IR7。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0

0 0 0 0 ID2 ID1

ID0ICW3——级连控制字(续)ICW3必须与主从片的实际连接关系一致:

例如,主片的IR4与唯一从片的INT线连接,则主片的ICW3=10H,从片的ICW3=04H。中断响应时,主片通过级连线CAS2-CAS0送出被允许中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。ICW4——中断结束方式字

SFNM:特殊全嵌套1特殊全嵌套方式0一般全嵌套方式AEOI:自动EOI1自动EOI方式0非自动EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0

1 0

0 0SFNM BUF M/S AEOI

1BUF:缓冲方式M/S:主/从缓冲选择BUFM/S 11缓冲方式/主PIC 10缓冲方式/从PIC 0x非缓冲方式/正常Master/Slave

?SpecialFullNested?OCW1——中断屏蔽字

Mi=1中断请求线IRi被屏蔽(不允许中断)=0允许该IRi中断OCW1将写入IMR寄存器。A0=1时读OCW1可读出设置的IMR内容。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7

M6 M5 M4 M3 M2 M1

M0OCW2——中断结束和优先级循环

L2~L0:优先级编码R:优先级自动循环吗?SL:指定优先级吗?EOI:结束中断命令(非AEOI方式)

RSLEOI001非指定EOI命令(NSEOI),全嵌套方式011指定EOI命令(SEOI),全嵌套方式,按L2-L0编码复位ISR101NSEOI命令,优先级自动循环100自动EOI,设置优先级自动循环000自动EOI,取消优先级自动循环(固定优先级)111SEOI命令,按L2-L0编码循环优先级(L2-L0设为最低优先级)110按L2-L0编码循环优先级(L2-L0设为最低优先级)

A0 D7 D6 D5 D4 D3 D2 D1 D0

0 R

SL EOI 0 0 L2 L1

L0OCW3——屏蔽方式和读出控制字

ESMM:允许使能特殊屏蔽方式SMM:

特殊屏蔽方式ESMMSMM11特殊屏蔽方式置位10特殊屏蔽方式复位0x非特殊屏蔽方式P(Polling):=1查询方式

=0非查询方式A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0ESMMSMM 0 1 P RR RISRR:读寄存器RIS:ISR/IRR选择RRRIS11读ISR10读IRR0x无效EnableSpecialMaskMode?ReadRegister?ReadInterruptServiceregister?查询方式允许8259A不工作于中断方式,而是以查询方式工作。CPU先写一个D2=1的OCW3,再对同一地址读入,即可得到如下状态字节:

IxxxxR2R1R0

I=1表示有中断请求,最高优先级中断请求号为R2-R0

此查询步骤可反复执行,以响应多个同时发生的中断。读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。8259A应用在IR0端输入脉冲,产生中断,查看寄存器AX的内容。CSIR0CS7A0A1P0D0-D73F0H译码电路8259A应用举例1CODESEGMENTASSUMECS:CODE

ORG100HSTART:MOVDX,3F0HMOVAX,13H;ICW1OUTDX,AXMOVDX,3F2HMOVAL,80H;ICW2OUTDX,AXMOVAX,01OUTDX,AX;ICW4MOVAX,0OUTDX,AX;OCW1

;SETINTENABLEMOVAX,0MOVDS,AXMOVSI,200HMOVAX,OFFSETHINTMOVDS:[SI],AXADDSI,2MOVDS:[SI],0100HMOVAX,0STIWAITING:CMPAX,55HJNEWAITINGNOPJMPSTARTHINT:MOVAX,55HNOPCLIIRETCODEENDSENDSTART中断服务程序中断的触发方式中断向量IR0的中断入口地址如何得到?中断服务程序的功能问题:A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x x 1LTIM xSNGL

IC4ICW1A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7

T6 T5 T4 T3 x x

xICW2A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7

S6 S5 S4 S3 S2 S1

S0A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0

0 0 0 0 ID2 ID1

ID0ICW3A0 D7 D6 D5D4 D3 D2 D1 D0

1 0

0 0SFNM BUF M/S AEOI

1ICW4A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7

M6 M5 M4 M3 M2 M1

M0OCW1A0 D7 D6 D5 D4 D3 D2 D1 D0

0 R

SL EOI 0 0 L2 L1

L0OCW2A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0ESMMSMM 0 1 P RR RISOCW38259A应用举例2编写程序,要求CPU在执行连接到8259A上的IR3中断源的中断服务程序时,能响应比IR3级别低的中断申请。IR3比IR3低的中断;IR3中断服务程序;执行IR3中断处理CLI;关中断MOVDX,04A2HINAL,DX;读原来屏蔽字ORAL,08H;屏蔽IR3OUTDX,AL;设置OCW1MOVDX,04A0H

MOVAL,68H;设置OCW3OUTDX,AL;设置特殊屏蔽方式STI;开中断。。。;此间可响应比IR3;低的中断。。。;接上面程序CLIMOVDX,4A0HMOVAL,48HOUTDX,AL;取消特殊屏蔽方式MOVDX,4A2HINAL,DXANDAL,0F7HOUTDX,AL;取消对IR3的屏蔽MOVDX,4A0HMOVAL,20HOUTDX,AL;发中断结束命令STI;开中断IRET8259A编程举例按以下要求初始化8259A:接口地址为20H和21H;中断为上升沿触发;单片8259A;不写ICW4;与IR0-IR3对应的中断向量码为08H-0BH;IR4-IR7不使用。根据要求,各初始化参数及工作参数如下:ICW1=00010010=12HICW2=08H中断向量码OCW1=11110000=0F0H中断屏蔽字INIT8259A: MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论