第9章 中断控制器 计数定时控制器及DMA控制器-郑学坚、周斌《微型计算机原理及应用》_第1页
第9章 中断控制器 计数定时控制器及DMA控制器-郑学坚、周斌《微型计算机原理及应用》_第2页
第9章 中断控制器 计数定时控制器及DMA控制器-郑学坚、周斌《微型计算机原理及应用》_第3页
第9章 中断控制器 计数定时控制器及DMA控制器-郑学坚、周斌《微型计算机原理及应用》_第4页
第9章 中断控制器 计数定时控制器及DMA控制器-郑学坚、周斌《微型计算机原理及应用》_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

电子信息类专业学科基础课程物理与电子信息学院1授课教师:侯俊钦微机原理第九章中断控制器、计数/定时控制器及DMA控制器第9章中断控制器计数/定时控制器及DMA控制器章节目录可编程中断控制器8259A可编程计数/定时控制器8253123可编程DMA控制器8237A1可编程中断控制器8259A8259A的主要功能专门处理和管理中断事务的接口芯片基本功能接受中断申请;并为中断分配指定中断类型码判优及嵌套管理中断屏蔽管理中断结束管理其他功能单片8259A可以连接8个中断源多片8259A级联后,可以接入最多64个中断源经判优后,最终选择一个送INTR引脚通过数据总线,自动地向CPU发送中断类型号基本功能具有多种不同的管理策略称为:8259的工作方式其工作状态和操作方式,可通过编辑和输入命令字的方式进行设置、确定和更改称为“可编程”1可编程中断控制器8259A名称输入/输出功能CS输入片选信号WR输入写命令信号RD输入读命令信号D7-D0输入/输出双向数据总线CAS0-CAS3输入/输出级联总线SP/EN输入/输出主从定义/缓冲器方向INT输出8259A中断申请IR0-IR7输入外设的中断请求INTA输入中断响应信号A0输入A0地址线8259A的外部结构及引脚功能级联信号从设备编程/缓冲器允许引脚内部寄存器选择。A0=0:ICW1,OCW2,OCW3A0=1:ICW2~ICW4,OCW1片选信号读、写信号1可编程中断控制器8259A中断请求中断响应数据线中断请求输入8259A的外部结构及引脚功能8259A的内部结构及功能1可编程中断控制器8259A68位的寄存器,用来接收来自IR0~IR7上的中断请求信号,当收到请求信号时就在IRR的相应位置位。外设产生中断请求的方式有两种:一种是边沿触发方式,另一种是电平触发方式。用户可根据需要通过编程来设置。中断请求信号输出入线,高电平有效。与外设的中断请求信号相连,接收来自外设的中断请求。固定优先级方式下IR0优先权最高,IR7优先权最低。

8位的寄存器,用来存放中断屏蔽字,它是由用户通过编程(操作命令字OCW1)来设置的。IMRi与IRi一一对应,当IMR中第i位置位时,就屏蔽了来自IRi的中断请求,使锁存于IRRi位的中断请求不能送达优先权裁决电路参加排队,也就是说,禁止了IRi的中断请求获得服务的机会。这样用户就可以根据需要设置IMR的值,从而改变系统原有的中断优先级。它是用来管理和识别各个中断源的优先级的,也分为两种情况。其一,根据优先级的规定,判别同时送达优先权电路的中断源(IRRi=1且IMRi=0的位)那一个级别最高。其二,根据当前服务寄存器的状态和新进入中断优先权裁决电路的中断请求,判别新的中断请求的级别是否更高,以决定是否进入中断嵌套。标记了CPU正在为哪些中断源服务,这又分为两种情况:其一,若CPU不处于中断服务状态,有未被屏蔽的中断请求,CPU满足中断响应条件,将响应这些请求中级别最高的中断。如经中断优先权裁决电路裁决IRi的中断请求被响应,当8259A收到第一个中断响应信号时将使ISRi置“1”,而IRRi清“0”。ISRi置1表明CPU正在为IRi端的中断请求服务;而IRRi由1变0则表示IRi端的中断请求已被响应。其二,若CPU正在为中断源服务,比如正在为IR6端的中断请求服务中,如果IR0又申请中断且没被屏蔽,按8259A的默认优先级IR0高于IR6,因而CPU会暂停IR6的中断处理而响应IR0的中断请求,这样ISR0也被置1,此时IRS0、IRS6均为1,这表明IR0、IR6的中断服务均未结束。从该意义上而言,ISR的每一位都是“中断服务的标志位”。1可编程中断控制器8259A例:如果当前IRR=35H,问有哪几个中断请求尚未被响应?00110101IR7IR6IR5IR4IR3IR2IR1IR0IRR例:如果当前ISR=45H,问有哪几个中断请求已经被响应?如果按照IR0的中断优先级最高,IR7的中断优先级最低排序,当前正在相应的是哪一级中断?ISR01000101IR7IR6IR5IR4IR3IR2IR1IR0当IR6有中断请求时,没有更高级的请求,给与响应。如果按照IR0的中断优先级最高,IR7的中断优先级最低排序,当IR2有中断请求时,优先级高于IR6,中断IR6,给与响应。当IR0有中断请求时,优先级高于IR2,中断IR2,给与响应。有三个中断请求已经被响应(IR6,IR2,IR0),当前正在执行的是IR0的中断服务。1可编程中断控制器8259AISR寄存器中断屏蔽寄存器IMR中断请求优先级编码器中断请求寄存器IRR比较器B0B1B2A>BA0A1A2ISR编码ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR0INTD0……D7IR0IR1IR2IR3IR4IR5IR6IR7中断优先权裁决电路1可编程中断控制器8259A9有一组初始化命令字寄存器(ICW1~ICW4共4个)和一组操作命令字寄存器(OCW1~OCW3共3个),这7个寄存器均由用户根据需要通过编程来设置。控制逻辑可以按照编程所设置的工作方式来管理8259A的全部工作。在IRR中有未被屏蔽的中断请求位时,它可以输出高电平的INT信号向CPU申请中断。在中断响应期间,它使得ISR的相应位置位,并控制向CPU发送相应的中断类型码。在中断服务结束时,它按照编程指定的方式进行结束处理。1可编程中断控制器8259A108位的双向三态缓冲器,用作8259A与系统数据总线的接口。用来传输初始化命令字、操作命令字、状态字和中断类型码。1可编程中断控制器8259A11

它接收来自CPU的读/写命令,完成规定的操作。具体动作由片选信号CS,地址输入信号A0,以及读(RD)和写(WR)信号共同控制。1可编程中断控制器8259A12在级联方式的主−从结构中用来存放和比较系统中各8259A的从设备标志(ID)。其中CAS0~CAS2是8259A相互间连接用的专用总线,用来构成8259A的主−从式级联控制结构。SP/EN在缓冲方式下产生总线启动信号,以控制总线缓冲器的接收和发送.1可编程中断控制器8259A●级联缓冲/比较器一个系统中,8259A可以级联,有一个主8259A,若干个(最多8个)从8259A级联时,主8259A的三条级连线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP*/EN*在非缓冲方式下,规定该8259A是主片(SP*=1)还是从片(SP*=0)1可编程中断控制器8259ASP/EN:主从片设定/允许缓冲信号,双向双功能,低电平有效。

8259数据线与系统数据总线间连接方式采用非缓冲方式(即直接相连,无数据总线驱动器)时,作为输入。主8259接高电平,从8259接低电平。

8259数据线与系统数据总线间连接方式采用缓冲方式(即有数据总线驱动器)时,作为输出,用于启动数据总线驱动器。如果工作在缓冲方式并且有级连应用时,作为输出,用于启动数据总线驱动器。主从片的设置用软件解决。●级联缓冲/比较器1可编程中断控制器8259A输入:作为主片时接+5V作为从片时接地8259工作于非缓冲方式1可编程中断控制器8259A8259工作于缓冲方式数据缓冲器输出:作为数据缓冲器的选通信号1可编程中断控制器8259ACAS0IR0CAS1IR1CAS2IR2

IR3-INTAIR4IR5INTIR6IR7-SP/-EN

CAS0-INTA

CAS1

CAS2INT

IR0

IR1-SP/-ENIR7CAS0IR0CAS1IR1CAS2IR2IR3-INTAIR4IR5INTIR6IR7-SP/-EN-INTAINTR+5V8259级联工作示意图输出得到响应的从片编号1可编程中断控制器8259A

8259A的多片级连方式

过程:8259A中断控制器支持级连工作方式,在级连的系统中,由一个主片和若干个从片组成(最大9片可构成64级中断源)。当从片中产生中断请求时,CPU响应中断后,在第一个中断响应负脉冲,由主片通过CASx向从片发出相对应的中断源位置号,在第二个中断响应负脉冲,由被选中的从片向数据总线输出中断类型码。1可编程中断控制器8259A8259级联工作示意图1可编程中断控制器8259A1可编程中断控制器8259A中断向量表物理地址单元内容INT4AH地址单元内容

IP=1806H

CS=F000HF000:180600000H类型0中断处理程序入口地址MOVAL,300:0124类型49H中断向量00001H0:01250:0126

向量地址:4AH*4=0128H0:012700004H类型1中断处理程序入口地址0:012806H0:012918H0:012A00H0:012BF0H00008H…………………………………………0:012C类型4BH中断向量0:012D0:012E0:012F中断处理服务程序IRET003FFH类型FFH中断处理程序入口地址软件中断的工作过程1可编程中断控制器8259A中断请求寄存器D7D6D5D4D3D2D1D000000000111D4D2D0中断屏蔽寄存器D7D6D5D4D3D2D1D000000100D4D0D0去往CPU请求阶段8259A的工作过程1可编程中断控制器8259A响应阶段中断请求寄存器D7D6D5D4D3D2D1D0000101010中断服务寄存器D7D6D5D4D3D2D1D0000000001中断类型码CPU取走类型码8259A的工作过程1可编程中断控制器8259A8259A工作结束阶段注:ISR寄存器的内容的改变与中断结束方式有关。在自动结束(AEOI)方式时,当第一个中断响应信号到达,ISR的相应位清0。其它方式时,ISR中的位保持到EOI(中断结束)命令执行。8259A的工作过程1可编程中断控制器8259A8259A的工作过程请求信号IRR锁存优先权判别器PR逻辑电路根据IMR判断IMR对应位为08259A的INT端为1优先权最高CPU的INTR端CPU响应中断IF=18259AINTAISR相应位置1,IRR响应位清0,送中断类型码●若允许嵌套,PR依据ISR的状态,判断新的中断请求优先权是否高于正在服务的中断,是则送出INT=1。此时ISR中将有两个(或两个以上)的中断服务状态置1●服务结束,8259A清除ISR响应位。1可编程中断控制器8259A普通全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式结束中断方式中断屏蔽方式普通屏蔽方式特殊屏蔽方式中断触发方式边沿触发方式电平触发方式数据线连接方式缓冲方式非缓冲方式与CPU配合方式与8080/8085CPU配合与8086/8088CPU配合级连方式级连不级连8259A的工作方式1可编程中断控制器8259A优先级排队的方式固定优先级:指各中断源的优先级由IRi引脚编号确定,优先级是固定的。有普通全嵌套方式和特殊全嵌套方式两种

(1)普通全嵌套方式

在该方式下,IR7~IR0的优先级顺序是IR0最高,IR7最低。且一个中断被响应,只有比它更高优先级的中断请求才会被响应。(2)特殊全嵌套方式

与全嵌套方式基本相同,不同之处在于该方式不但响应比本级高的中断申请,而且响应同级的中断申请。

系统中若只有单片8259A时,通常采用普通全嵌套方式。系统中有多片8259A级联时,主片必须采用特殊全嵌套方式,从片可采用全嵌套方式。1可编程中断控制器8259A主程序初始化STIIR2,IR4有请求ISR2=1IR2中断处理程序

IR1有请求,开中断后才能被响应

STIIR1中断处理程序(嵌套)

STI

ISR1=1中断结束命令ISR1被清除IRET返回IR2中断处理程序中断结束命令ISR2被清除ISR4=1IR4中断处理程序STI中断结束命令IRET返回IR2中断处理程序

IRETISR4被清除返回主程序为什么低优先级的IR4可以打断高优先级的IR2的执行?完全嵌套例:1片8259A,在IR2和IR4引脚上同时出现中断请求。IR1引脚上又有中断请求。1可编程中断控制器8259AD.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR7发生中断,并获得服务一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7去CPU1可编程中断控制器8259A循环优先级:

指当某个中断源受到中断服务后,它的优先权就自动降为最低,而优先级较其低一级的升为最高。例如,IR4被服务后,相应的IR5的优先级升为最高,依次为IR6,IR7,IR0,IR1,IR2,IR3,IR4。(1)优先权普通循环方式该方式下,8259A总是自动规定:初始时,IR0有最高优先权,IR7最低。当某个中断源受到中断服务后,它的优先权就自动降为最低,而优先级较其低一级的升为最高。(2)优先权特殊循环方式该方式下,由用户编程决定初始时的最低优先级。如规定IR5最低,则相应的最高优先权为IR6,依次为IR7,IR0,IR1,IR2,IR3,IR4,IR5。1可编程中断控制器8259AIR7IR6IR5IR4IR3IR2IR1IR0原始状态ISR01000100优先级76543210结束IR2ISR01000000优先级43210765结束IR6ISR00000000优先级07654321思考:8259工作于优先权普通循环方式,当IR3的中断服务结束时,IR6处于优先级的哪一级?IR7IR6IR5IR4IR3IR2IR1IR0优先级32107654优先权普通循环方式举例:1可编程中断控制器8259AIR7IR6IR5IR4IR3IR2IR1IR0原始状态ISR01000100优先级76543210执行置位优先权命令ISR01000100优先级21076543置位优先权命令:将IR4置为优先权最低思考:如果欲将IR2的优先级设为最高级,应如何实现?答:使用置位优先权命令:将IR1置为优先权最低.优先权特殊循环方式举例:1可编程中断控制器8259A中断屏蔽方式普通屏蔽方式当CPU执行主程序时不希望某几个中断源申请中断,或在执行某一中断服务程序时不希望比该中断源级别更高的中断源申请中断,可采用此法。方法是:将中断屏蔽字写入IMR,若某位写入“1”,则禁止相应的IR申请中断,若写入“0”,则开放相应的中断源。特殊屏蔽方式在执行某一中断服务程序时,仅对本级中断进行屏蔽,允许接受级别较低的中断请求。设置特殊屏蔽方式后,对正在响应的某级中断,编程使IMR对应位置1,就会同时使ISR的对应位复位。这样,不只屏蔽了当前正在处理的本级中断,而且开放了较低级的中断请求。1可编程中断控制器8259A34由上面的叙述可以看出,普通屏蔽方式的命令字可在主程序或中断服务程序中写入,而特殊屏蔽方式的命令字应当在中断服务程序中写入。00001000IR7IR6IR5IR4IR3IR2IR1IR0IMR0000000ISR例如正在执行IR3的中断服务:0虽OCW3能将8259A中将IMRi置1,实现了特殊屏蔽,但中断服务程序的运行并未真正清除;所以,该中断服务程序临近结束时,应解除特殊屏蔽,以保证该中断服务程序的正常结束和返回故需要发送两次的OCW1

和OCW31可编程中断控制器8259A自动结束方式(AEOI):当某一中断发生后,CPU一旦响应该中断,8259A在第一个INTA脉冲将ISR相应位置为1,在第二个INTA脉冲由8259A的ISR寄存器输出中断向量类型码到数据总线上由CPU读取,同时8259A自动清除ISR中的相应位,这种方式通常用于非中断嵌套方式的单片系统中。(进入中断程序后自动清除)非自动结束方式(EOI):在非自动结束中断方式下,必须在中断服务程序返回之前,向8259A发出中断结束命令EOI,使得ISR中的当前服务位清除“0”。

a)一般中断结束方式(全嵌套)非自动结束方式

b)特殊中断结束方式(特殊嵌套)结束中断方式1可编程中断控制器8259A一般中断结束方式:当8259A工作在全嵌套方式时采用此结束方式,即CPU中断服务结束时,向8259A输出一条一般中断结束方式命令,8259A会自动清除ISR中的最高级位。(OCW2)特殊中断结束方式:它用于特殊嵌套方式中,由于此时优先级结构在变化,无法确定正在响应的是哪一级中断,所以给8259A发一个特殊中断结束命令,该命令指明要清除当前中断服务寄存器ISR中的哪一位。当8259A工作在级连方式时,一般采用非自动结束方式,但需发两个EOI命令,第一个给从片8259A,并且读取从片的ISR值,确认从片ISR没有新的中断后,发第二个给主片8259A。(OCW2)1可编程中断控制器8259A电平触发方式:

IR0~IR7以高电平方式作为中断请求的有效信号。边沿触发方式:

IR0~IR7以上升延跳变方式作为中断请求的有效信号。3)查询方式:在此方式下,外设仍需通过IR0~IR7向8259A发送中断信号,但与上两种方式不同是,8259A不向CPU发中断INTR信号,而是通过CPU向8259A发查询命令(OCW3的D2)后,读取查询字来确定是否有外设请求中断服务。中断触发方式1可编程中断控制器8259A屏蔽方式正常屏蔽特定屏蔽请求方式电平触发边沿触发中断请求IRRIR0IR7…优先级编码器&INT≥1&&中断屏蔽IMRD0D7……ISR编码比较器最高优先级IRINT嵌套方式完全嵌套特殊全嵌套优先级管理固定轮转不指定指定自动结束方式时总是后,请求IR优先结束方式自动手工不指定指定级联方式缓冲非缓冲主、从片关系8259A工作方式(小结)1可编程中断控制器8259A8259A的编程8259A的工作状态和操作方式是由CPU通过命令字进行控制的。8259A有两类命令字——

初始化命令字ICW(InitializationCommandWords)

操作命令字OCW(OperationCommandWords)。初始化命令字ICW,当计算机刚启动时,由CPU按次序发送24个不同格式的ICW,用来建立起8259A操作的初始状态,此后的整个工作过程中该状态保持不变。操作命令字(OCW)用于动态控制中断处理,是在需要改变或控制8259A操作时随时发送的。每片8259A有2个片内地址A0=0和A0=1,所有的命令字都是通过这两个端口来发送的。1可编程中断控制器8259A1.初始化命令字ICW8259A在开始工作前必须写入初始化命令字初始化命令字ICW最多可以有4个:ICW1~ICW4,必须按照以上顺序依次写入其中ICW1

和ICW2

是必须的,ICW3和ICW4是否需要,由ICW1指明ICW1写入偶地址,其他写入奇地址级联方式下,主从片都要写ICW3关中断设置ICW1设置ICW2级联?从片?设置主片ICW3设置ICW4开中断NN设置从片ICW3需要ICW4?YNY1可编程中断控制器8259A初始化命令字ICW1ICW2ICW3ICW40A0A7A6A5D7D6D51D4LTIMD3ADID2SINGLD1IC4D0中断向量地址的A7~A5,仅用于8080/8085系统,其他系统无意义。中断请求触发方式选择:1:电平触发0:边沿触发调用地址间隔(8080/8085用):1:4个字节0:8个字节1:单一82590:8259级联1:需用ICW40:不用ICW41可编程中断控制器8259A初始化命令字ICW1ICW2ICW3ICW4用于设定中断类型码1A0A15A14A13A12A11A10A9A8D7D6D5D4D3D2D1D0T7T6T5T4T3×××8080/8085系统为中断向量地址的A15~A8.8086/8088系统中为中断类型码的高5位1可编程中断控制器8259A假设偶地址端口地址为20H,指令执行后,对8259A设置了基本工作状态,ICW1的含义是什么?MOVAL,11HOUT20H,AL00010001一片8259A上的8个中断源的8个中断类型码是连续的设置ICW2=40H,则8259A的IR0~IR7

,对应的8个中断类型码为:40~47H,写出其ICW2的初始化程序。如果其IR4的中断类型码是0BCH;则该8259A的IR0~IR7

,对应的8个中断类型码为:

0B8H到0BFHMOVAL,40HOUT21H,AL1可编程中断控制器8259A例.已知某中断向量存放在000D4H地址单元处。并且由000D4H单元起始依次存放着10H、20H、30H、40H。请回答:(1)中断类型号为何?(2)接入8259时,该8259的ICW2应为何?(3)该中断源应接入该8259的哪个中断请求输入引脚?(4)该中断向量的物理地址为何?(5)CPU响应该中断时,CS中的值为何?IP中的值为何?1可编程中断控制器8259A初始化命令字ICW1ICW2ICW3ICW4有多片8259A级联时,才需要设置ICW31A0IR7IR6IR5IR4IR3IR2IR1IR0D7D6D5D4D3D2D1D01:该引脚有从片,0:该引脚无从片主片×××××ID2ID1ID0D7D6D5D4D3D2D1D0从片从设备的ID编码1可编程中断控制器8259A主8259

IR7……IR4………IR0INT从8259(1)

IR7……IR4………IR0INT从8259(2)

IR7……IR4………IR0芯片名ICW3主8259从8259(1)从8259(2)00010001=11H00000100=04H00000000=00H例1可编程中断控制器8259A初始化命令字ICW1ICW2ICW3ICW41A0000D7D6D5SFNMD4BUFD3M/SID2AEOID1μPMD01:特殊完全嵌套方式0:完全嵌套方式0X:非缓冲方式10:缓冲方式,从片11:缓冲方式,主片1:自动结束方式0:非自动结束1:8086/8088系统0:8080/8085系统1可编程中断控制器8259A例

一个CPU为8086/8088的系统,采用1片8259A做控制器,要求其工作在全嵌套方式,不用中断自动结束方式,不用缓冲方式,中断请求信号为边沿触发方式,中断类型码为0B0H~0B7H。该8259A的两个端口地址分别为20H和21H,试完成初始化程序。0A0A7A6A5D7D6D51D4LTIMD3ADID2SINGLD1IC4D0ICW120H0001001ICW41(13H)ICW21A0A15A14A13A12A11A10A9A8D7D6D5D4D3D2D1D0T7T6T5T4T3×××21H10110000(B0H)1可编程中断控制器8259A例

一个CPU为8086/8088的系统,采用1片8259A做控制器,要求其工作在全嵌套方式,不用中断自动结束方式,不用缓冲方式,中断请求信号为边沿触发方式,中断类型码为0B0H~0B7H。该8259A的两个端口地址分别为20H和21H,试完成初始化程序。ICW41A0000D7D6D5SFNMD4BUFD3M/SID2AEOID1μPMD021H00000001(01H)MOVAL,13HOUT20H,ALMOVAL,0B0HOUT21H,ALICW1ICW2MOVAL,01HOUT21H,ALICW41可编程中断控制器8259A假设8259A的端口地址为B0H、B1H思考:8259A如下要求的初始化程序段该如何写?该8259A芯片的工作状态为:

单片8259A

中断请求电平触发

中断类型码从40H开始

一般全嵌套方式

非缓冲方式

自动中断结束方式MOVAL,1BHOUTB0H,ALMOVAL,40HOUTB1H,ALMOVAL,03HOUTB1H,AL1可编程中断控制器8259A8259A初始化例例:2片8259级联,从片的INT接主片的IR2假设端口地址:主片20H、21H,从片A0H、A1H主片和从片均采用边沿触发;均为非自动结束方式主片采用特殊全嵌套方式,从片是一般全嵌套方式采用非缓冲方式,主片SP接+5V,从片SP接地主片的中断类型号为38H~3FH,从片的中断类型号为70H~77H写出主8259A和从8259A的初始化程序段1可编程中断控制器8259A初始化程序段如下:ICW1AEQU20H ;定义主片端口地址符号ICW2AEQUICW1A+1ICW3AEQUICW2AICW4AEQUICW2AICW1BEQU0A0H ;定义从片端口地址符号ICW2BEQUICW1B+1ICW3BEQUICW2BICW4BEQUICW2B

;-----------主片8259A------------MOVAL,11H ;ICW1,边沿触发,多片,需ICW4OUTICW1A,ALMOVAL,38H ;ICW2,中断类型码OUTICW2A,ALMOVAL,04H ;ICW3,IR2接从片OUTICW3A,ALMOVAL,11H ;ICW4,非缓冲,特殊全嵌套;非自动结束中断OUTICW4A,AL;-----------从片8259A------------MOVAL,11H ;ICW1,边沿触发,多片,需ICW4OUTICW1B,ALMOVAL,70H ;ICW2,中断类型码OUTICW2B,ALMOVAL,02H ;ICW3,INT接主片的IR2OUTICW3B,ALMOVAL,01H;ICW4,非缓冲,普通全嵌套;非自动结束OUTICW4B,AL1可编程中断控制器8259A操作命令字OCW1OCW2OCW31可编程中断控制器8259A操作命令字OCW1OCW2OCW31A0M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2IR1IR0Mi=1:IRi的中断请求被屏蔽Mi=0:IRi的中断请求开放1可编程中断控制器8259A操作命令字OCW1OCW2OCW30A000D4D3RD7SLD61:L2~L0有意义0:L2~L0无意义L2L1L0D2D1D01:循环优先级0:固定优先级EOID51:有中断结束功能0:无中断结束功能1可编程中断控制器8259A操作命令字OCW1OCW2OCW30A000D4D3RD7SLD6L2L1L0D2D1D0EOID5SL=1时有意义:R=1、EOI=0时指出循环优先级起始最低优先级,即为特殊循环优先级。R=0、EOI=1时指出要清除的ISR位,即为特殊中断结束方式。R=EOI=1时是上述两功能的组合,即指出要清除的ISR位,同时指定它为最低优先级。1可编程中断控制器8259ARSLEOIL2~L0功能名称应用000无用设置固定优先级用于固定优先级和循环优先级间的切换100无用设置循环优先级001无用一般的EOI命令(一般的中断结束)固定优先级下的中断结束命令字011给出要清除的ISR位的编码特殊的EOI命令(特殊中断结束方式)101无用循环优先级一般的EOI命令循环优先级下的中断结束命令字110给出循环优先级的最低起始级的中断编码设置特殊循环优先级用于设置特殊循环优先级111给出要清除的ISR位,同时又指定它为循环优先级的最低起始级特殊的EOI命令特殊的循环优先级特殊循环优先级下的中断结束命令字1可编程中断控制器8259A操作命令字OCW1OCW2OCW30A001D4D30D7ESMMD6SMMD5特殊屏蔽方式允许位:1:允许;0:禁止特殊屏蔽方式位:1:进入特殊屏蔽0:恢复一般屏蔽(D6=1时有效)11:进入特殊屏蔽10:退出特殊屏蔽0X:无意义1可编程中断控制器8259A操作命令字OCW1OCW2OCW30A001D4D30D7ESMMD6PD2RRD1RISD0SMMD5查询方式位:1:查询命令;0:无查询功能读IRR,ISR寄存器允许位:1:允许;0:禁止RR=1有效RIS=0:读IRRRIS=1:读ISR1XX:设置为查询方式(从偶地址口读回)00X:无意义010:读IRR允许(从偶地址口读回)011:读ISR允许(从偶地址口读回)1可编程中断控制器8259A读取状态字CPU可随时读出IRR、ISR、IMR和查询字A0为低(偶地址)时由OCW3中RR和RIS位编码决定读取的是IRR或ISR,由OCW3中P位决定读取的是查询字,查询字可反映8259A是否有中断请求,及哪个引脚上有中断请求A0为高(奇地址)时,读取的是IMR1可编程中断控制器8259A查询字I----W2W1W0D7D6D5D4D3D2D1D0中断位I位为1,有外设请求中断W2~W0的编码当前中断请求的最高优先级1可编程中断控制器8259AESMMSMM功能0*该操作对特殊屏蔽无效10无效特定屏蔽11设置特定屏蔽

设置方法:

用OCW1屏蔽部分IR[含自己],用OCW3置SMM即可。

取消方法:

用OCW3取消特定屏蔽,用OCW1取消被屏蔽的IR。

特定屏蔽管理:1可编程中断控制器8259A

8259A的读操作

在PC机中8259A的端口地址为20H和21H。常用的读操作有如下几种。

(1)读出IRR的值:先向20H端口写0AH(OCW3RR=1、RIS=0),再读20H端口。例如:

MOV AL,00001010B ;OCW3=0AHOUT 20H,AL ;OCW3写入8259AIN AL,20H ;读出IRR内容1可编程中断控制器8259A(2)读出ISR的值:先向20H端口写0BH(OCW3RR=1、RIS=1),再读20H端口。例如:

MOV AL,00001011B ;OCW3=0BHOUT 20H,AL ;OCW3写入8259AIN AL,20H ;读出ISR内容(3)读查询字(读出最高级别的中断请求IR):先向20H端口写0CH(OCW3P=1),再读20H端口。例如:

MOV AL,00001100B ;OCW3=0CHOUT 20H,AL ;OCW3写入8259AIN AL,20H ;读出查询字内容1可编程中断控制器8259A(4)读IMR的值。随时可用奇地址读IMR的值,并对其作修改。例1:IN AL,21H ;读IMRAND AL,7FH ;开放IR7中断OUT 21H,AL ;修改IMR

例2:

IN AL,21H ;读IMROR AL,80H ;关闭IR7中断

OUT 21H,AL ;修改IMR1可编程中断控制器8259A已知有A、B、C、D四个中断源,它们的中断类型号如下:ABCD40H45H32H33H应如何将它们接入8259?主8259IR7….IR5…IR3….IR0从8259IR7….IR5…IR3IR2..IR0ABCDINTINTCPU设它们的端口地址为:主片:FFE8H、FFEAH;

(A0=0)(A0=1)

从片:FFF8H、FFFAH

(A0=0)(A0=1)8259级联应用举例1可编程中断控制器8259A要求:中断信号边沿触发;非自动EOI;非缓冲方式1、主片8259的初始化:MOVAL,11HMOVDX,0FFE8HOUTDX,ALMOVDX,0FFEAHMOVAL,40HOUTDX,ALMOVAL,08HOUTDX,ALMOVAL,11HOUTDX,ALMOVAL,0D6HOUTDX,AL写入ICW1写入ICW2写入ICW3写入ICW4写入OCW11可编程中断控制器8259AMOVAL,11HMOVDX,0FFF8HOUTDX,ALMOVDX,0FFFAHMOVAL,30HOUTDX,ALMOVAL,03HOUTDX,ALMOVAL,01HOUTDX,ALMOVAL,0F3HOUTDX,AL写入ICW1写入ICW2写入ICW3写入ICW4写入OCW12、从片8259的初始化:2可编程计数/定时控制器8253主要用途1.中断信号2.输出精确的定时信号3.波特率发生器4.实现延迟2可编程计数/定时控制器8253软件定时(也称软件延时)定时时间由软件编程(循环执行某段程序)来控制。方法简单、费用低;但CPU的利用率低。不可编程的硬件定时定时时间由不可编程器件和外围电路控制,通过改变电路参数,可在一定的范围内改变定时时间,定时精度不高。如:555芯片。可编程的硬件定时定时时间和范围是通过软件对可编程器件进行编程控制,由CPU的时钟信号提供时间基准,定时精确。与CPU并行工作,应用比较广泛,如8253,8254。

实现定时的方式2可编程计数/定时控制器8253减1计数器判零外设计数/定时脉冲CLK外设OUTCPU预置值CPU计数和计时本质上是相同的,它们都是对一个输入脉冲进行计数。计数器的输入信号可以是随机信号,定时器的输入信号要求具有固定周期。可编程定时/计数器8253就是一个减法计数器,它是Intel公司专为80×86系列配套开发的16位可编程定时/计数器芯片。定时/计数器的计数方式2可编程计数/定时控制器8253具有3个独立的16位计数器通道;每个通道有6种工作方式,可由程序设置和改变;每个计数器均可按二进制或二—十进制计数;每个计数器的计数速率高达2MHz;

可用作可编程方波频率产生器、分频器、程控单脉冲发生器等;所有的输入输出电平都与TTL兼容。8253引脚及功能2可编程计数/定时控制器8253CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2计数器0计数器1计数器2数据总线缓冲器读/写逻辑控制字寄存器D7~D0A1A0WRRDCS内部总线双向、三态、8位,CPU通过数据总线缓冲器可向控制字寄存器写入控制字,向计数器写入计数初值;也可读出计数器当前计数值。接收来自CPU的控制信号。完成对8253各计数器的读/写操作。接收CPU写入的控制字,决定8253使用哪个计数器,工作方式、读/写格式、计数方式。计数器的门控信号实现对CLK输入时,减1计数器是否工作的控制。其控制关系由不同工作方式确定。计数器的输出信号减1计数器为0时的输出信号,可以用于对外部控制,也可用于向CPU申请中断。计数器的时钟信号计数器:由外设提供的计数脉冲。定时器:时钟脉冲8253的内部结构2可编程计数/定时控制器8253CSRDWRA1A0功能

0001001对计数器A1A0设置计数初值

1001011设置控制字或给一个命令

0000101从计数器A1A0读出计数值

10读写控制逻辑组合功能表2可编程计数/定时控制器8253高8位低8位GATECLKOUT输出锁存器OL计数初值寄存器CR高8位低8位

计数执行部件CE(16位减1计数器)高8位低8位1)16位计数初值寄存器CR

存放计数初值可通过程序来设置2)计数执行部件CE

一个16位减1计数器;初值是计数初值寄存器的内容;在GATE控制下,对CLK脉冲计数;启动后每出现一个CLK脉冲计数值减1;当减为0时通过OUT输出结束信号。3)输出锁存器OL

通常随计数执行部件CE的内容变化;

当接收到CPU锁存命令时,锁存当前的计数值,而当前计数值被CPU读取后,OL内容又随CE的内容变化。4)CLK信号周期性时钟信号,定时器功能;非周期性计数信号,计数器功能。5)GATE信号控制输入端有多种控制作用(允许/禁止计数、启动/停止计数)定时/计数器的内部结构及工作原理2可编程计数/定时控制器8253作为计数器使用时:

通过编程对计数器预置一个初值n。如果门控信号GATE允许,计数器对CLK输入的脉冲进行减1计数(二进制/十进制)。

当计数器的值减为0时从OUT端输出一个脉冲信号。BCD:初值可以为0000~9999H;当初值为0时,先减1得9999H,到最后减为0,进行了10000次计数,所以初值0相当于10000二进制:0000~FFFFH;初值0000H相当于655362可编程计数/定时控制器82538253作为定时器使用时,其定时时间计算公式为:例:在某系统中,8253的CLK上的计数脉冲频率为0.5MHz,8253计数器的初值是n=500。定时时间=时钟脉冲周期tclk预置的计数初值n注意:8253外部输入引脚CLKi上的时钟脉冲频率不能大于2MHz。定时时间=2s500=1ms作为定时器使用时:

通过编程对定时器预置一个初值n。如果门控信号GATE允许,定时器对CLK输入的脉冲进行减1计数(二进制/十进制)。

当计数器的值减为0时从OUT端输出一个脉冲信号。CLK端输入定时脉冲,定时脉冲周期为tCLK。2可编程计数/定时控制器8253在对8253进行编程时,由CPU向它写控制字,来选定计数器通道,并规定所选计数器的工作方式。D7D6D5D4D3D2D1D0SC1

SC0

RW1RW0M2

M1

M0

BCD00:选择通道001:选择通道110:选择通道211:无效00:计数器锁存01:读写低字节10:读写高字节11:先低,后高000:方式0001:方式1X10:方式2X11:方式3100:方式4101:方式51:BCD0:2进制BCD:0000~9999H;二进制:0000~FFFFH;BCD:1200H=1200;二进制:1200H=4608控制字格式2可编程计数/定时控制器82531.初始化步骤:(1)写入控制字;(2)按控制字要求写入计数初值。计数初值N=fCLK/fOUT=TOUT/TCLK例:8253的地址为3F0H、3F2H、3F4H、3F6H,要求8253的计数器0工作于方式3,BCD码计数,计数器初值n=1234H,初始化程序为:MOV AL,37HMOV DX,3F6HOUT DX,ALMOV AL,34HMOV DX,3F0HOUT DX,ALMOV AL,12HOUT DX,AL写控制字写计数值低8位写计数值高8位*非必须2可编程计数/定时控制器82532.各工作模式应注意的特点1)门控信号的影响方式0,4时:门控信号为电平触发

方式1,5时:门控信号为上升沿触发

方式2,3时:门控信号为电平或上升沿触发

高电平允许:当GATE=0,即使出现CLK,也不计数——方式0,2,3,4上升沿允许(上升沿触发)——方式1,5,2,3写入控制字后,OUT的状态计数过程中,OUT的状态计数终了,OUT的状态3)计数操作可否重复不可重复——模式0,4自动重复——模式2,3条件重复——模式1,52)OUT信号的状态2可编程计数/定时控制器82531、方式0——计数结束中断方式时序图CW=10HCLKGATEOUTWRLSB=66543210CRCECR=68253的工作方式用途:常用来对外部事件计数,利用OUT由低到高的变化中断请求信号。

2可编程计数/定时控制器8253两种特殊情况:

1CW=10HCLKGATEOUT1

0WRLSB=44322210CRCECR=40101GATE门控信号的改变2可编程计数/定时控制器8253两种特殊情况:

CR=3CW=10HCLKGATEOUTWRLSB=33213210CRCECR=3LSB=3CRCE中途改变计数初值2可编程计数/定时控制器82532、方式1——可编程单稳态输出方式时序图CRCE12CW=12HCLKGATEOUTWRLSB=330CRCECR=3用途:输出稳态负脉冲

OUT端输出负脉冲的宽度=时钟脉冲宽度×计数值N。2可编程计数/定时控制器8253注意:在计数过程中,GATE为高、低和下降沿,均不影响计数;但若又来一上升沿,则将计数初值重新装入实际计数器,重新开始计数,使OUT端的负脉冲变长;2可编程计数/定时控制器82533、方式2——比率发生器时序图CRCECRCECW=14HCLKGATEOUTWRLSB=3321032103CRCECR=321用途:分频器若计数器的初值为n,则OUT引脚产生的波形频率为时钟脉冲频率的n分之一。2可编程计数/定时控制器8253注意:(1)任何时候重新写入新的计数初值,当原计数值减为0时,才按新写入的计数值进行计数;

(2)计数过程中,当GATE再产生上升沿时,在下一个时钟脉冲下降沿,重新将计数初值装入实际计数器,开始减1计数。2可编程计数/定时控制器82534、方式3——方波发生器时序图CRCECW=16HCLKGATEOUTWRLSB=44242424CRCECR=424计数初值为偶数时的波形CRCECRCECRCE2可编程计数/定时控制器82532CRCECW=16HCLKGATEOUTWRLSB=5542554CR=525计数初值为奇数时的波形CRCECRCECRCE4、方式3——方波发生器时序图2可编程计数/定时控制器82535、方式4——软件触发选通时序图CR=2CRCECW=18HCLKGATEOUTWRLSB=22102100CRCECR=2LSB=22可编程计数/定时控制器82536、方式5——硬件触发选通时序图CRCECRCE12CW=1AHCLKGATEOUTWRLSB=3303332CRCECR=32可编程计数/定时控制器82536种工作方式小结:方式0:计数初值N写入CR后,当GATE为高电平时,经过N个时钟脉冲之后OUT由0到1跳变每写一次初值仅仅计数一次方式1:计数初值N写入CR后,由GATE上升沿触发,OUT输出一个负的单脉冲

单脉冲宽度T=NTCLK

不必每次都写初值。方式2:计数初值N写入CR后,当GATE为高电平时,输入端每输入N个时钟脉冲,在输出端出现一个负的时钟脉冲——N分频器。自动重装入初值。2可编程计数/定时控制器82536种工作方式小结:方式4:计数初值N写入CR后,触发计数(此时GATE必须为高电平),经N个时钟脉冲,输出端产生选通负脉冲信号,宽度=1个CLK 只计一次方式3:计数初值N写入CR后,当GATE为高电平时,n为偶数时OUT输出一系列方波(N分频器)

。N值为奇数时,输出矩形波,高低电平时间不同(差一个时钟周期)

。 自动重装入初值。方式5:计数初值N写入CR后,硬触发(GATE输入一个正脉冲)后,经N个时钟脉冲,输出端产生选通负脉冲信号,宽度=CLK 不必每次都写初值2可编程计数/定时控制器8253实际应用例子的解题思路:确定端口地址—确定计数初值-确定工作方式—确定电路图——编程(写入控制字、初值)8253的编程只需要初始化。初始化之后,芯片自动工作,无需程序干扰注意:用到多个通道时,对每个通道都要依次写控制字,写初值。8253的应用举例2可编程计数/定时控制器82538253A的A1、A0:与8086CPU的A2、A1相连; 与8088CPU的A1、A0相连。A1A1A0A08位80888253端口地址:A1A000011011X0HX1HX2HX3H80868253低8位A2A1A1A0A2A1A0000110110000端口地址:X0HX2HX4HX6H8253的端口地址及片选信号2可编程计数/定时控制器8253例1:

在某个以8086为CPU的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频率为1MHz。要求3个计数通道分别完成以下功能:1)计数器0工作于方式3,输出频率为2KHz的方波;2)计数器1产生宽度为480s的单脉冲;3)计数器2用硬件方式触发,输出单脉冲,时间常数为26。通道的地址为310H,312H,314H,316H。1)计数器0:方式3,OUT0输出方波

N0=fCLK/fOUT=1MHz/2KHz

=106/2103=5002)计数器1:方式1,OUT1输出单脉冲

N1=TOUT/TCLK

=480s/1s

=4802可编程计数/定时控制器8253例1:3)计数器2:模式5,OUT2输出门控单脉冲,N2=26A9~A0=1100010XX0310H~316H480us宽单脉冲CLK0808674LS1388253CLK1CLK2GATE0OUT0GATE1OUT1GATE2OUT21MHzCSA1A0RDWRD7~D0D7~D0WRRDA1A2A0A3A4ABCG2BG2AG1A5A6A7A8A9M/IO2KHzY4负脉冲+5V2可编程计数/定时控制器8253;通道0方式字及初值MOVDX,316HMOVAL,00110111BOUTDX,ALMOVDX,310HMOVAL,00HOUTDX,ALMOVAL,05H;通道1方式字及初值MOVDX,316HMOVAL,01110011BOUTDX,ALMOVDX,312HMOVAL,80HOUTDX,ALMOVAL,04HOUTDX,AL;通道2的方式字及初值MOVDX,316HMOVAL,10011011BOUTDX,ALMOVDX,314HMOVAL,26HOUTDX,AL2可编程计数/定时控制器8253例2:时钟脉冲以2MHz输入8253,实现每5秒定时中断(设8253端口地址40H~46H)分析:按照公式计数初值n=Tout/Tclk=107,而初值计数器只有16位,最大计数次数为65536,所以一个计数器不行,需要两个计数器串联,一个计数器的输出作为另一个计数器的输入。OUT0GATE0CLK0OUT1GATE1CLK1+5V+5V2MHz每5秒产生一个脉冲2可编程计数/定时控制器8253级联时每个计数器初值的计算N0=Tout0/Tclk0=Tout0/Tout1=Tout0/(N1*Tclk1)N0*N1=Tout0/Tclk1=107采取级联后,要使得级联的两个计数器的计数初值的乘积为107,所以两个计数器的初值N1、N2可以多种取值,只要N1*N2=107即可。可以取N1=10000,N2=10002可编程计数/定时控制器8253首先,选择工作方式要实现每5秒,即自动循环计数,那么方式

0:只计数一次,不符合

1:每次要用上升沿才能触发计数,不行

2:只要Gate为高电平就可以自动循环计数,满足

3:类似方式2,也满足

4:Gate为高电平时,计数一次

5:必须用Gate上升沿才能触发计数,同12可编程计数/定时控制器8253例2:计数器1:方式2,OUT1每5ms输出一个脉冲,初值 N1=定时时间/Tc=5ms/0.5s=10000计数器0:方式2,OUT0每5s输出一个脉冲,初值 N2=定时时间/Tc=5s/5ms=1000OUT0GATE0CLK0OUT1GATE1CLK1+5V+5V2MHz每

温馨提示

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

评论

0/150

提交评论