《第七章 中断控制器、DMA控制器和计数器定时器(戴梅萼).ppt》由会员分享,可在线阅读,更多相关《第七章 中断控制器、DMA控制器和计数器定时器(戴梅萼).ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七章 中断控制器、DMA控制器和计数器定时器7.1 中断控制器8259A8259A用于管理和控制8086的外部中断请求,实现优先级判决,提供中断矢量码,屏蔽中断输入等功能。使用单片8259A可以管理8级中断,采用级联方式,可扩充到64级(用9片8259A)。CPU8259A.IR0IR7级联主8259AIR0从.IR7 8259AIR0从.IR7INTAINTRIR0IR7单片 INTINTA8259AINTRINTACPU.中断请求7.1.1 8259A的引脚信号、编程结构和工作原理123456789101112131428272625242322212019181716158259ACS
2、 WR RDD7D6D4D5D2D3D0D1CAS0CAS1GNDINTAIR7IR6IR4IR5IR2IR3IR0IR1INTCAS2 SP/ENVCCA01.8259A的外部引脚信号 D7 D0:双向数据总线,接到系统数据总线的D7 D0 上,用来传送控制字、状态字和中断类型号。INT:向CPU发出的中断请求信号。(单片时)。INTA:中断响应信号,由此接收CPU发来的中断响应脉冲。片选信号,低电平有效,来自地址译码器的输出只有 有效时,CPU才能对8259A进行读写操作。写信号,低电平有效,来自CPU的 输出;当 有效且 有效时,使8259A接受CPU送来的命令字。读信号,低电平有效,来
3、自CPU的 输出;当 有效且 有效时,使8259A将状态信息放到数据总线 上,供CPU检测。IR7IR0:中断请求信号,输入,来自外部接口电路。(单片时)A0:地址输入信号,用于对8259A内部寄存器的寻址。CAS2 CAS0:级联线,对于主片为输出,对于从片为输入。:编程/双向允许信号。-作为输入时,“非缓冲方式”,8259A作为主片(1)8259A作为从片(0)-作为输出时,“缓冲方式”,用来启动(允许)数据总线收发器。=0,控制数据从8259A送到CPU,反之。CSWRCSCSCSRDWRWRRDSP/ENSP/ENSP/ENSP/ENRD2.8259A的编程结构和工作原理CPUAD7A
4、D0INTAINTRSP/ENISR中断服务ICW1芯片控制 OCW1 (IMR中断屏蔽)ICW2类型OCW2优先级循环方式和中断结束方式ICW3主从OCW3多功能操作ICW4方式控制PR优先级判别IRR中断请求D7D0地址译码.INTINTACSRDWRA0CAS0CAS1CAS2.IR7IR07个寄存器的寻址问题:规定:A0 ICW1:用偶地址写入,且D4=1ICW2ICW3ICW4紧接着ICW1,用奇地址写 入OCW1:用奇地址写入,但不紧跟ICW1OCW2OCW3 用偶地址写入,且D4=0即:000采用了专门的“标识位,以节省输入地址的引脚数(仅用了A0)8259A的处理部件:中断请求
5、寄存器IRR8位寄存器控制逻辑 作用:接受并锁存来自IR0IR7的中断请求信号中断服务寄存器ISR 作用:保存当前正在处理的中断请求优先级裁决器PR 作用:把新进入的中断请求和当前正在处理的 中断进行比较,以决定哪一个优先级更高处理过程:IR0IR7上出现某一中断请求信号IRR对应位被置“1”由IMR的相应位决定是否将其屏蔽(屏蔽位=1,不通过;屏蔽位=0,通过)中断请求进PRPR把新进入的中断请求和当前正在处理的中断进行优先级比较若新进入的中断优先级高,该中断请求被送到CPU。若CPU的IF=1,CPU完成当前指令后,响应中断,在 引脚上发出两个负脉冲(执行两个中断响应总线周期,)8259A
6、收到第一个负脉冲后使IRR锁存失效,不予接受IR0IR7上的中断请求信号;直到第二个负脉冲结束后,才又使IRR锁存有效。使ISR的相应位置“1”,以便为优先级裁决器以后的裁决提供依据。清除IRR的相应位。8259A收到第二个负脉冲后:把中断类型码寄存器的内容(ICW2的内容)送到D7D0如果ICW4的AEOI(中断自动结束位)为1,则在第二个 脉冲结束时,将ISR中被第一个 脉冲置“1”的位清除(自动结束);否则,要等到中断结束命令(EOI)发送后才能清除。INTAINTAINTA7.1.2 8259A的工作方式1.设置优先级的方式(1)全嵌套方式也称固定优先级方式。在这种方式下,由IRn引入
7、的中断请求具有固定的优先级:IR0(最高)IR7(最低).当一个中断请求被响应时,ISR中的对应位ISn被置“1”,8259A把中断类型码放到数据总线上,然后,进入中断服务程序。一般情况下(除了“中断自动结束”方式外),在CPU发出中断结束命令(EOI)前,此对应位一直保持为“1”封锁同级或低级的中断响应,但并不禁止比本级优先级高的中断响应实现中断“嵌套”。(2)特殊全嵌套方式在处理某一级中断时,不但允许优先级更高的中断请求进入,也允许同级的中断请求进入。用于主从结构的8259系统中,将主片设置为“特殊全嵌套方式”。通过ICW4的“SFNM”位(D4=1)可以设置此种方式。CPUIR0IR1I
8、R7IR0IR1IR78259(主片)8259(从片)(3)优先级自动循环方式优先级是循环变化的(不希望有固定的优先级差别)一个设备的中断服务完成后,其优先级自动降为最低,而将最高优先级赋给原来比它低一级的中断请求。开始时,优先级队列还是:IR0IR7,若此时出现了IR0请求,响应IR0并处理完成后,队列变为:IR1,IR2,IR3,IR4,IR5,IR6,IR7,IR0。若又出现了IR4请求,处理完IR4后,队列变为:_系统中是否采用“自动循环优先级”,由操作命令字 OCW2 R位(D7)来设定。(4)优先级特殊循环方式与“优先级自动循环方式”相比,只有一点不同,即可以设置开始的最低优先级。
9、例如,设定IR4为最低优先级,那么IR5就是最高优先级,其余各级按循环方法类推。操作命令字 OCW2 SL位(D6)来设定,SL=1时L2L1L0(D2 D0)有效指出最低优先级。2.屏蔽中断源的方式(中断屏蔽方式)普通屏蔽方式通过对中断屏蔽寄存器(IMR)的设定,实现对相应位为“1”的中断请求的屏蔽。可通过OCW1使IMR的一位或几位置“1”。例:屏蔽2、3、5、6位进入的中断请求,假设8259A的端口地址为20H,21H。MOV AL,01101100B OUT 21H,AL*特殊屏蔽方式作用:在中断服务处理程序中使用,只屏蔽本级中断,开放较低级别中断。实现:输出OCW3(ESMM=1,S
10、MM=1)输出OCW1(使IMR对应于本级的位为“1”)输出OCW1(使IMR对应于本级的位为“0”)输出OCW3(ESMM=1,SMM=0)“中断级无效”设置撤销3.中断结束方式(1)中断自动结束方式(AEOI方式)在第二个 后沿,即完成把对应的ISR位复位。注意:AEOI方式是在中断响应后,而不是在中断处理程序结束后将ISR位清0。这样,在中断处理过程中,8259A中就没有“正在处理”的标识。此时,若有中断请求出现,且IF1,则无论其优先级如何(比本级高、低或相同),都将得到响应。尤其是当某一中断请求信号被CPU响应后,如不及时撤销,就会再次被响应“二次中断”所以,AEOI方式适合于中断请
11、求信号的持续时间有一定限制以及不出现中断嵌套的场合。通过ICW4(D2)可以设置AEOI方式(AEOI=1)INTA(2)一般(常规)中断结束方式适合于全嵌套方式。实现:在中断服务程序结束时,向8259A发常规中断结束命令(OCW2:EOI=1,SL=0,R=0)例:MOV AL,20H;OCW2=20H OUT 20H,AL;端口地址=20H(偶地址)在全嵌套方式下,ISR中最高优先级的置“1”位,正对应于当前正在处理的中断,将其清“0”,就完成了当前正在处理中断的结束操作。(3)特殊中断结束方式在非全嵌套方式下,无固定的优先级序列(使用设置优先权命令或特殊屏蔽方式),此时,根据ISR的内容
12、就无法确定刚刚所响应(处理)的中断。这种情况下,就不能用上述的EOI方式进行中断结束处理,而必须用特殊的中断结束命令SEOI用OCW2:EOI=1,SL=1,R=0,L2L0.由L2L0指定清除ISR中的哪一位。4.连接系统总线的方式缓冲方式(ICW4的BUF=1)8259A通过总线驱动器(如8286)和数据总线相连。在缓冲方式下,8259A的 作为输出(有效),此时,由ICW4的M/S位来定义(标识)本8259A是主片还是从片。非缓冲方式(ICW4的BUF=0)即8259A直接与数据总线相连在“非缓冲方式下”,8259A的 作为输入(有效)此时,由 端来标识本8259A是主片还是从片。在“非
13、缓冲方式下”,ICW4的BUF0,M/S位无意义。SP/ENENSP/ENSPSP/EN5.引入中断请求的方式电平触发方式:由IRi上的有效电平来触发“中断请求触发器”。边沿触发方式:由IRi上由低电平向高电平的跳变来触发“中断请求触发器”。由ICW1的LTIM位可以设置中断触发方式。*“中断查询”方式特点:总的说,既有中断的特点,又有查询的特点。外设仍然向8259A发中断请求信号,要求CPU服务。CPU的IF=0,不响应外部的中断请求(对CPU的中断请求信号不起作用)此时,CPU需要用软件查询方法来确认中断源,从而实现对设备的服务先向8259A发查询命令(OUT指令)OCW3:当8259A收
14、到P=1的查询命令后,立即组成查询字。紧接着执行一条读指令(IN指令),读出专门的“中断状态字”:在下一个 信号将使ISR的相应位置“1”,就像收到了 一样,并把上述的“中断状态字”送到数据总线上,由CPU读入AL。0 0 0 0 1 1 0 0P0A0IR W2 W1 W0D7D01:有设备请求服务;0:无设备请求服务。当前最高优先级的中断请求RDINTA7.1.3 8259A的初始化命令字和操作命令字 ICW1芯片控制初始化命令字LTIM:触发方式=1 高电平触发=0 上升沿触发SNGL:级连控制=1 单片=0 级连IC4:ICW4控制=1 要写ICW4=0 不写ICW4(默认ICW4为全
15、0)A0 D7D6 D5 D4 D3 D2 D1 D0 0 x x x 1 LTIM x SNGL IC4例:某8086微机系统中,使用单片82C59A,中断请求信号为上升沿触发,需要设置ICW4,端口地址为20H和21H,则其初始化命令字ICW1应为:0001001113H,设置ICW1的指令为:MOV AL,13H OUT 20H,AL ICW2中断类型码初始化命令字T7T3:中断向量码的高5位T2T0:最低3位为中断源的序号IRn000111分别对应分别对应IR0IR7由由8259A根据中断源的序号自动填入根据中断源的序号自动填入 例如:例如:若若ICW2命令字为命令字为48H,则,则I
16、R0的中断向量码为的中断向量码为48H,IR7的中断向量码为的中断向量码为4FH,等等。,等等。A0 D7D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 x x x例:8259A采用前沿触发,单片使用,需要ICW4,假设IR0的类型码为08H,试确定ICW1,ICW2.8259A端口地址:20H,21H ICW1=0001 0011B ;前沿触发,单片,需ICW4 ICW2=0000 1 000B MOV AL,00010011B OUT 20H,AL MOV AL,00001000B OUT 21H,AL ICW3主片/从片初始化命令字(级连控制字)主片的级联控制
17、字 Sn=1 对应对应IRi线上连接了从片线上连接了从片 A0 D7D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0从片的级联控制字 ID2ID0 标识码,说明本从片连接到主片的哪个标识码,说明本从片连接到主片的哪个IR引脚引脚上。上。000111分别对应分别对应IR0IR7。A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 ID2 ID1 ID0ICW3必须与主从片的连接关系一致:例如,主片的IR4与从片的INT线连接,则主片的ICW3=10H,从片的ICW3=04H。中断响应时,主片通过级连线CAS2-CAS0送出被允许
18、中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。例:假设主片8259A的IR3和IR6接了2个从片.主片端口地址:20H,21H;1#从片端口地:A0H,A1H 试设置ICW3.主片:ICW3=0100 100B=48H从片1#:ICW3=0000 0011=03H从片2#:ICW3=0000 0110=06H 主片ICW3的初始化程序段:MOV AL,48H OUT 21H,AL 1#从片ICW3的初始化:MOV AL,03H OUT 0A1H,AL ICW4方式控制初始化命令字(中断结束方式字)SFNM:特殊全嵌套1 特殊全嵌套方式特殊全
19、嵌套方式0 一般全嵌套方式一般全嵌套方式AEOI:自动EOI1 自动自动EOI方式方式0 非自动非自动EOI方式方式A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNM BUF M/S AEOI 1BUF:缓冲方式 M/S:主/从缓冲选择BUF M/S 1 1 缓冲方式缓冲方式/主主PIC 1 0 缓冲方式缓冲方式/从从PIC 0 x 非缓冲方式非缓冲方式/正常正常送送ICW1,是否用是否用ICW4用用ICW2设中断类型码设中断类型码级连方式?级连方式?设设ICW3需要需要ICW4?设设ICW4准备接受中断准备接受中断YNNY初始化编程举例 例:某8086微机系统中有一
20、片82C59A,中断请求信号为电平触发,中断类型码为40H47H,中断优先级管理采用普通全嵌套方式,中断结束方式采用自动结束方式,系统中未使用数据缓冲器,系统分配给82C59A的端口地址为20H和21H,试对该82C59A进行初始化编程。分析:由于系统中使用单片82C59A,所以初始化时不需要ICW3,本例中82C59A要求工作在非缓冲方式,故在硬件上将SP/EN接+5V,ICW4中的MS位无意义,可设置为0 对82C59A的初始化程序如下:MOV AL,00011011B ;设置ICW1初始化命令字 OUT 20H,AL ;将ICW1输出到偶地址端口 MOV AL,01000000B ;IC
21、W2中断类型号基值 OUT 21H,AL ;将ICW2送入奇地址端口 MOV AL,00000011B ;ICW4 OUT 21H,AL ;将ICW4送入奇地址瑞口 3.8259A的操作命令字 OCW用于设置8259的工作状态在初始化后写入OCW的写入顺序可任意写入地址要求:OCW1必须写入奇地址端口必须写入奇地址端口(A0=1)OCW2,OCW3必须写入偶地址端口必须写入偶地址端口(A0=0)OCW1中断屏蔽字 Mi=1 中断请求线IRi被屏蔽(不允许中断)=0 允许该IRi中断 OCW1将写入IMR寄存器。A0=1时读OCW1可读出设置的IMR内容。A0 D7D6 D5 D4 D3 D2
22、D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0 OCW2中断结束和优先级循环 L2L0:优先级编码R:优先级自动循环SL:指定优先级EOI:结束中断命令 R SL EOI 0 0 1 非指定EOI 命令(NSEOI),全嵌套方式 0 1 1 指定EOI 命令(SEOI),全嵌套方式,按L2-L0编码复位ISR 1 0 1 NSEOI 命令,优先级自动循环 1 0 0 自动EOI,设置优先级自动循环 0 0 0 自动EOI,取消优先级自动循环(固定优先级)1 1 1 SEOI 命令,按L2-L0编码循环优先级(L2-L0设为最低优先级)1 1 0 按L2-L0编码循环优先级(L2
23、-L0设为最低优先级)A0 D7D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0OCW3屏蔽方式和读出控制字 ESMM:允许使能特殊屏蔽方式SMM:特殊屏蔽方式ESMM SMM1 1 特殊屏蔽方式置位1 0 特殊屏蔽方式复位0 x 非特殊屏蔽方式P(Polling):=1 查询方式 =0 非查询方式A0 D7D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P RR RISRR:读寄存器RIS:ISR/IRR选择RR RIS1 1 读ISR1 0 读IRR0 x 无效功能一:设置和撤销特殊屏蔽方式功能二:设置中断查询方式功能三:
24、设置对8259A内部寄存器的读出命令OCW3(续)查询方式允许8259A不工作于中断方式,而是以查询方式工作。CPU先写一个先写一个D2=1的的OCW3,再对同一地址读入,再对同一地址读入,即可得到如下状态字节:即可得到如下状态字节:I x x x x R2 R1 R0 I=1表示有中断请求,中断请求号为表示有中断请求,中断请求号为R2-R0 此查询步骤可反复执行,以响应多个同时发生此查询步骤可反复执行,以响应多个同时发生 的的中断。中断。读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。关于8259A的读出操作,可以读四个方面的内容读“中断状态字”(“查询字”
25、):先写入P=1的OCW3查询命令字用偶地址读(IN AL,20H)读IRR:先写入OCW3(RR=1,RIS=0)用偶地址读(IN AL,20H)读ISR:先写入OCW3(RR=1,RIS=1)用偶地址读 (IN AL,20H)随时可用奇地址读IMR (IN AL,21H)例1:IN AL,21H;读IMRAND AL,7FH;开放IR7中断OUT 21H,AL例2:IN AL,21H;读IMROR AL,80H;关闭IR7中断OUT 21H,AL设置中断向量的方法利用指令来设置。利用DOS功能调用来设置。利用指令设置中断向量例:设中断服务子程序名为INTHAND.MOV AX,0MOV D
26、S,AXMOV BX,N*4 ;中断向量在中断向量表中的偏移地址送BXMOV AX,Offset INTHAND ;获得中断向量偏移地址MOV WORD PTR BX,AX MOV AX,SEG INTHAND ;获得中断向量地址MOV WORD PTR BX+2,AXSTI RET INTHAND:.;中断服务程序 IRET使用DOS功能调用存取中断向量(1)设置中断向量把由AL指定的中断类型的中断向量DS:DX放置在中断向量表的相应位置中。AH=25H 执行:INT 21HAL=中断类型号DS:DX=中断向量(2)取中断向量把由AL指定的中断类型的中断向量从中断向量表中取到ES:BX中预置
27、:AH=35H 执行:INT 21H AL=中断类型号返回:ES:BX=中断向量例:使用DOS功能调用存取中断向量.MOV AL,N ;中断类型码送ALMOV AH,35H ;获得中断向量INT 21H PUSH ES;保护PUSH DX PUSH DS MOV AX,SEG INTHAND MOV DS,AX ;中断服务程序 INTHAND段地址送DSMOV DX,Offset INTHAND ;中断服务程序 INTHAND偏移地址送 DXMOV AL,N ;中断类型码送ALMOV AH,25H ;保存中断向量到中断向量表INT 21HPOP DS POP DX POP DS RET INT
28、HAND:.;中断服务程序 IRET8259A编程举例按以下要求初始化8259A:接口地址为20H和21H;中断为上升沿触发;单片8259A;不写ICW4;与IR0-IR3对应的中断向量码为08H-0BH;IR4-IR7不使用。根据要求,各初始化参数及工作参数如下:ICW1=00010010=12HICW2=08H 中断向量码 OCW1=11110000=0F0H 中断屏蔽字 8259A编程举例(续)初始化程序如下:初始化程序如下:INIT8259A:MOV DX,20H;A0=0,写ICW1MOV AL,12H;上升沿触发,单片,不写ICW4OUTDX,ALMOV DX,21H;A0=1,写
29、ICW2,OCW1MOV AL,08H;ICW2OUTDX,ALMOV AL,0F0H;OCW1:屏蔽IR4-IR7OUTDX,AL中断程序举例PC机中主8259A的I/O地址为20H和21H,中断向量码为08H;中断请求从IR6引入,故中断类型号为0EH;主程序如下:主程序如下:;保存原来的中断向量保存原来的中断向量MOVAH,35HMOVAL,0EH ;中断类型码;中断类型码INT21H ;取原中断向量(在;取原中断向量(在ES:BX中)中)MOVSAVE_IP,BX ;保存原来的中断向量;保存原来的中断向量MOVSAVE_CS,ES;设置自己的中断向量设置自己的中断向量PUSH DSMO
30、VDX,OFFSET MY_INTMOVAX,SEG MY_INTMOVDS,AX ;DS:DX的内容为的内容为MY_INT的首地的首地址址MOVAH,25HMOVAL,0EHINT21H ;设置自己的中断向量;设置自己的中断向量POPDS ;初始化堆栈指针初始化堆栈指针MOVSP,MY_STACK_TOP ;设置设置8259A的中断屏蔽的中断屏蔽字字INAL,21HANDAL,10111111B ;开放;开放IR6中断中断OUT21H,ALSTI 子程序如下:子程序如下:MY_INT PROC FARPUSH POPMOVAL,20H ;EOI命令,命令,00100000B OUT20H,A
31、L;写;写OCW2STIIRETMY_INT ENDP7.3.1 概述实现定时的三种方法:1.软件定时:由CPU执行指令序列所花费的时间来构成一定的时间间隔,从而达到定时的目的。例如:MOV CX,H HERE:LOOP HERE优点:不需要专门的硬件设备。缺点:浪费了宝贵的CPU资源。7.3 可编程定时/计数器82532.不可编程的硬件定时 时序波形 稳态 td触发信号 暂稳态3.可编程计数器/定时器可用软件的方法(通过初始化编程)设定或调整定时范围。典型产品:Zilog Z80-CTC Intel 8253(8254)单稳态电路1.8253的结构和工作原理(1).主要功能*具有3个独立的1
32、6位计数器通道;*每个计数器均可按二进制或二十进制计数;*每个计数器的计数速率高达2MHz;*每个通道有6种工作方式,可由程序设置和改变;*所有的输入输出都与TTL兼容。7.3.3可编程计数器/定时器8253(2).8253的编程结构*三个计数器(减法器)3个独立的16位减法器,可作定时/计数器使用;计数器按二/BCD方式减法计数,从预常减到零时,OUT端输出一信号。*数据总线缓冲器(传送信息)写控制字,写时常,读计数值*读写逻辑*控制字寄存器(存放控制字)计数器0 Vcc D0-D7 计数器初值寄存器(CR)GNDRD RD CLK0 计数执行部件(CE)GATE0 WR WR OUT0IO
33、/M CS 输出锁存器(OL)CLK1 GATE1 A1 OUT1 CLK2 A0 GATE2 OUT2 控制寄存器(8位)高8位低8位高8位低8位高8位低8位 计数器1 计数器2 数据总线缓冲 器计数器0读/写逻辑控制字寄存器计数器1计数器2CLK0CLK1CLK2GATE0GATE1GATE2OUT0OUT1OUT2D7 D0RDWRA0A1CS8253内部结构内部数据总线(3).8253 的引线*数据线(D7D0)*地址线:选择内部寄 存器;*控制线:完成片选和 读写操作。CLK:时钟输入线;GATE:门控信号输入线;GATE=0 禁止计数,GATE=1 允许工作;OUT:输出引脚;当计
34、数到“0”时,OUT 端输出一信号。8253输入信号组合的功能表2.8253控制字寄存器的格式00 选择计数器001 选择计数器110 选择计数器211 非法选择0=二进制1=BCD计数器读/写格式工作方式数制D0D1D2D3D4D5D6D7 在8253的初始化编程中,由CPU向8253的控制寄存器写入一个控制字来规定8253的工作方式。00 计数器锁存命令10 只读/写最高有效字节(高八位)01 只读/写最低有效字节(低八位)11 先读写最低有效字节然后读写最高有效字节000 方式0001 方式1*10 方式2*11 方式3100 方式4101 方式53.8253编程命令(1)读出命令用来读
35、出计数器当前的值。(2)写入命令写控制字设置初始值锁存命令4.8253的工作方式 控制字写入计数器,所有逻辑控制电路复位,输出out初始状态。方式0为低电平,其它方式为高电平。初值写入计数器,经过一个时钟上升沿和下降沿,计数执行部件开始计数。门控信号触发方式:电平触发 方式0,方式4 方式2,方式3 上升沿触发 方式1,方式5 因计数器作减一计数,故最大初值为0。二进制 0=216,十进制 0=104。计数初值=时钟频率 x 定时时间。例:时钟频率=2MHz,需延时2ms,初值=4000。*GATE=1;*CW写入,OUT=0;*写入时常,通道开始计数;*计数到零,OUT=1;*计数器只计数一
36、遍;*OUT是N+1个CLK后变高;*计数过程中,GATE=0,计数暂停;*计数过程中可改变计数值;(1).方式0 (计数结束产生中断)(2).方式1(可编程单稳)*写入控制字OUT=1,写入常数不计数;*GATE启动计数,OUT=0;*计数到,OUT=1。*单拍脉冲宽度为N;*由GATE重新启动;*计数中,可重新启动;*计数中,可改变计数值,再次启动有效。(3).方式2(分频器)*写入控制字OUT=1;*写入常数立即对CLK计数;*计数到1,OUT=0;*一个CLK周期后,OUT=1,重新计数。*通道连续工作不需重置时常;*计数过程中,GATE=0,计数暂停,GATE变高后重新计数;*计数过
37、程中可改变计数值;新的计数值在下一次有效。(4).方式3(方波发生器)*与方式2的区别在于:输出为周期是N个CLK脉冲的方波。若计数值为偶数,则方波为对称方波。高低电平持续时间为 N2*若计数值为奇数,则方波为不对称方波。高电平持续时间为 (N+1)/2,低电平持续时间为(N1)/2。*GATE信号控制计数过程;*计数过程中写入新的计数值将在半周期结束时装入计数器。例:要求计数器0工作于方式3,输出方波的频率为2KHz,计数脉冲的频率为2.5MHz,采用BCD计数,试写出初始化程序段。2.常数计算:TC=2.5MHz/2KHz=1250MOV AL,37HOUT 83H,ALMOV AL,50
38、HOUT 80H,ALMOV AL,12HOUT 80H,AL1.8253的端口地址为:80H,81H,82H,83H。000111113.8253的方式控制字为:4.初始化程序段:(5).方式4(软件触发选通信号发生器)*写入控制字OUT=1;*写入常数立即对CLK计数;*计数到0,OUT=0;*一个CLK周期后,OUT=1,计数器停止计数。*计数器只计数一遍;*OUT是N+1个CLK后变低;*计数过程中,GATE=0,计数暂停;*若在计数过程中,改变计数值,则按新的计数值重新开始计数。(6).方式5(硬件触发选通信号发生器)*写入控制字OUT=1;*写入常数后,由GATE的上升沿启动计数;
39、*计数到0,OUT=0;*一个CLK周期后,OUT=1,计数器停止计数。*计数器只计数一次;*OUT是N+1个CLK后变低;*在 计数过程中出现的GATE脉冲,将使 计数器重新开始计数,对输出状态没有影响;*若在计数过程中改变计数值,只要没有GATE信号触发,不影响计数过程。有新的GATE信号触发则按新的计数值开始计数。5.8253工作方式小结(1).输出端OUT的初始状态 只有方式0是在写入控制字后输出为低,其它均为高;(2).计数值的设置 任一种方式,只有在写入计数值后才能开始计数,方式0、2、3、4在写入计数值后,计数自动开始,方式1、5需外部触发,才开始计数。计数值N与输出波形的关系(
40、3).门控信号的作用-GATE输入总是在CLK输入时钟的上升沿被采样。在方式0,2,3,4中,GATE输入是电平起作用。在方式1,2,3,5中 GATE输入是上升沿起作用的。(4).在计数过程中改变计数值立即有效是写入计数值后的下一个CLK脉冲后,新的计数值开始起作用。(5).计数到0后计数器的状态计数器减到0后并不停止,在方式0,1,4,5,计数器减到0后从FFFF/9999继续计数。方式2,3是连续计数,计数器自动装入计数值后,继续计数。6.8253的编程8253初始化编程的步骤:1.写入通道控制字,规定通道的工作方式;(A1A0=11)2.写入计数值(由控制字的D7D6确定通道号)。若规
41、定只写入低8位,则写入的为计数值的低8位,高8位自动置0;若规定只写入高8位,则写入的为计数值的高8位,低8位自动置0;若是16位计数值,则分两次写入,先写入低8位,再写入高8位。例1:某8253端口地址为F8HFBH,欲用通道0以方式1,按BCD计数,计数值为5080。1.确定通道控制字;2.计数值的低8位为80;3.计数值的高8位为50。00110011初始化程序为:MOV AL,33HOUT 0FBH,ALMOV AL,80HOUT 0F8H,ALMOV AL,50HOUT 0F8H,AL在计数过程中,8253读计数器现行值的方法:(将计数值存入内部锁存器)MOV AL,03H ;计数器
42、0的锁存命令OUT 0FBH,AL;写入控制寄存器IN AL,0F8H;读低8位MOV CL,AL ;存入CL中IN AL,0F8H;读高8位MOV CH,AL ;存入CH中Intel8253的应用举例A4A3A0A5M/IOA7A6A9A8G1G2BG2ACBAY4A2A1RDWRD7D0GATE0OUT0CLK0CLK1CLK2GATE1OUT1GATE2OUT2A1A0RDWRD7D0CS1MHz方波5V2KHz方波1ms的负脉冲单脉冲8086CPU74LS138例2:用8253产生各种定时波形。例2:用8253产生各种定时波形。要求:(1)通道0输出频率为2KHz的方波;(2)通道1产
43、生宽度为1ms的负脉冲;(3)通道2以硬件方式触发,输出单脉冲时常为26。已知:8253基地址为310H,3通道所用时钟脉冲频率为1MHz。分析:通道0工作于方式3,控制端GATE0接+5V,时间常数N0=1MHz/2KHz=500;通道1工作于方式1,由控制端GATE1的正跳变触发,OUT1的宽度为时常,单次触发,时间常数N1=1ms/0.001ms=1000;通道2工作于方式5,由控制端GATE2的正跳变触发,可连续触发,时间常数N2=26。;通道0初始化程序MOV DX,316HMOV AL,00110111BOUT DX,ALMOV DX,310H MOV AL,00HOUT DX,A
44、LMOV AL,05HOUT DX,AL;通道1初始化程序MOV DX,316HMOV AL,01110011BOUT DX,ALMOV DX,312H MOV AL,00HOUT DX,ALMOV AL,10HOUT DX,AL;通道2初始化程序MOV DX,316HMOV AL,10011011BOUT DX,ALMOV DX,314H MOV AL,26HOUT DX,AL例3:8253控制LED。要求:LED点亮10秒,熄灭10秒分析分析:8253的地址线与CPU高8位数据线D8D15相连,8253的各端口的地址为81H、83H、85H、87H。OUT1输出占空比为1:1的方波,825
45、3端口1工作在方式3。时钟频率为2MHz时,16位计数通道的最大定时时间为:0.5s65536=32.768ms级连:通道0输出400Hz脉冲(时常5000),通道1输出0.05Hz方波(时常8000)。D7-D0WR RD A1 A0 CSCLK0OUT0CLK1OUT1译码WRRDA2A1M/IOA0-A7+5VD8-D15GATE0GATE12MHz;通道0初始化程序MOV AL,00110101BOUT 87,ALMOV AL,00HOUT 81,ALMOV AL,50HOUT 81,AL;通道1初始化程序MOV AL,01110111BOUT 87,ALMOV AL,00HOUT 8
46、3,ALMOV AL,80HOUT 83,AL例4:用8253设计一个自动计数系统(计数500向CPU提出中断申请)。8253端口地址:F0H,F2H,F4H,F6H,8253工作方式:计数器1工作于方式0,按BCD计数,先读写低字节,后读写高字节。D7-D0OUT0 WR RD A1 A0 CSGATE1CLK1译码INTRWRRDA2A1M/IOAB+5V+5V+5V;通道1初始化程序MOV AL,01110001BOUT 0F6H,ALMOV AL,99HOUT 0F2H,ALMOV AL,04HOUT 0F2H,AL;读通道1计数值程序MOV AL,01000000BOUT 0F6H,
47、ALIN AL,0F2HMOV AH,ALIN AL,0F2HXCHG AH,AL当前计数值的读取 (1)利用GATE控制信号,使计数器停止计数。故干扰了计数过程,需要硬件电路配合。(2)利用计数器锁存命令锁存现行计数值,就可从相应的计数器通道中读取计数值。71 8259A的初始化命令字和操作命令字有什么差别?它们分别对应于编程结构中哪些内部寄存器?72 8259A的中断屏蔽寄存器IMR和80868088的中断允许标志IF有什么差别?在中断响应过程中,它们怎样配合起来工作?73 8259A的全嵌套方式和特殊全嵌套方式有什么差别?各自用在什么场合?74 8259A的优先级自动循环方式和优先级特殊
48、循环方式有什么差别?75 8259A的特殊屏蔽方式和普通屏蔽方式相比,有什么不同之处?特殊屏蔽方式一般用在什么场合?76 8259A有几种结束中断处理的方式?各自应用在什么场合?除了中断自动结束方式以外,其他情况下如果没有在中断处理程序中发中断结束命令,会出现什么问题?77 8259A引入中断请求的方式有哪几种?如果对8259A用查询方式引人中断请求,那会有什么特点?中断查询方式用在什么场合?78 8259A的初始化命令字有哪些?它们各自有什么含义?哪几个应写入奇地址?哪几个应写入偶地址?79 8259A的ICW2设置了中断类型码的哪几位?说明对8259A分别设置ICW2为30H、38H、36
49、H有什么差别?710 8259A通过ICW4可以给出哪些重要信息?什么情况下不需要用ICW4?什么情况下要设ICW3?习题711 试按照如下要求对8259A设置初始化命令字:系统中有一片8259A,中断请求信号用电平触发方式,下面要用ICW4中断类型码为60H、61H、62H67H,用特殊全嵌套方式,不用缓冲方式,采用中断自动结束方式。8259A的端口地址为93H194H。712 怎样用8259A的屏蔽命令字来禁止IR3和IR5引脚上的请求?又怎样撤消这一禁止命令?设8259A的端口地址为93H、94H。713 试用OCW2对8259A设置中断结束命令,并使8259A按优先级自动循环方式工作。
50、714 用流程图来表示特殊全嵌套方式时的工作过程。设主程序运行时先在IR2端有请求,接着IR2端又有请求,而此时前一个IR2还未结束,后来I R3端有请求,再后来IRl端有请求。715 说明特殊屏蔽方式的使用方法。为什么要用“或”的方法来设置屏蔽字?716 80386系统中,8259A采用了级连方式,试说明在主从式中断系统中8259A的主片和从片的连接关系。717 设8259A工作于优先级循环方式,当前最高优先级为IR4,现在要使优先级最低的为IRl,则应该再设置哪个操作命令字?具体的值为多少?718 下面是一个对8259A进行初始化的程序段,请为下面程序段加上注释,并具体说 明各初始化命令字