第8中断控制器DMA控制器计数器定时器.ppt
第 8 章 中断控制器DMA控制器计数器/定时器,8-1中断控制器 8259A8-2计数器/定时器 82538-2DMA控制器 8273A第8章小节第8章思考题,学习目的:,通过对本章的学习,您应该能够达到下列要求:了解 8259A、8237A、8253 芯片的内部结构描述各芯片的工作原理熟悉 8259A、8253 芯片的工作方式掌握各芯片的编程方法学会 8253 的应用重点:8259A、8237A、8253A工作原理与应用,第一节 中断控制器8259A,主要内容:8529A的内部结构8259A的工作方式8259A 的初始化命令字和操作命令字8259A 级联方式8259A使用举例多片8259A组成的主从式中断系统,中断的概念,中断:外设向CPU发中断请求,CPU接收到中断请 求并在一定条件下,暂时停止执行原来的程 序而转去处理中断,处理好中断服务再返回 继续执行原来的程序,就称为一个中断过程。中断是CPU被动的响应外设要求服务。1、中断源:(1)数据输入/输出设备请求中断(2)定时时间到申请中断(3)满足规定条件申请中断(4)电源掉电(5)故障报警申请中断(6)程序调试设置中断,2、CPU响应中断的条件(1)、无总线请求(2)、CPU允许中断:IF=1(3)、CPU执行完当前指令3、CPU响应中断要自动完成的任务:(1)关中断(2)保护断点(IP,CS,FLAG入栈)(3)给中断服务程序的入口地址,4、中断处理过程,保护现场:保护主程序中的一些寄存器值 开中断:开放优先级更高的中断 执行中断服务程序 关中断 恢复现场 中断返回 5、中断源的识别:查询(软件识别)硬件识别:外设提供中断申请信号和中断矢量,中断控制器8259A,8259A的功能:中断优先权管理中断屏蔽自动中断矢量转移 8259A特点:单片8259可处理8级中断级联时:最多可用9片处理64级中断8259A的片内寻址A0=1、0,一、8529A的芯片内部结构1.数据总线缓冲2.读写控制逻辑3.级联缓冲比较4.中断请求寄存器5.中断服务寄存器6.中断屏蔽寄存器 7.优先权判别单路8.控制电路 在8086系统中,CPU和8259A的所有数据传送都在数据总线的低8位上进行。地址总线的A1与8259A的A0相连,以保证数传都在总线的低8位中进行。,8259A的工作原理如下:,中断请求寄存器IRR分别和IR7IR0相对应,IRR接收外部的中断请求。接到某一引脚的中断请求后,IRR中的对应位便置1。中断屏蔽寄存器IMR中的对应位为1表示此中断以加屏蔽,为0表示此中断未加屏蔽可通过而进入中断优先级裁决器PR作裁决。PR对新进入的中断请求和ISR中当前正在处理的中断比较,从而决定哪一个优先级更高,是否使8259A的输出端INT为1。,如CPU的IF为1,CPU执行完当前指令后,就可以响应中断。CPU从INTA线上往8259A回送两个负脉冲。,第一个负脉冲到达时,8259A完成以下动作:1.使IRR的锁存功能失效2.使当前中断服务寄存器ISR中的相应位置13.使IRR寄存器中的相应位即刚才设置的位清0。第二个负脉冲到达时,8259A完成下 列动作:1.将中断类型寄存器的内容ICW2送到数据总线的D7D0,CPU将此作为中断类型码。2.如果ICW4 中的中断自动结束位为1,那么,在第INTA 脉冲结束时,8259A会将第 一 INTA脉冲到来时设置的 当前中断服务寄存器ISR的相应位清0。,二、8259A的工作方式,1.中断触发方式(1)边沿触发方式 此方式由ICW1来设置。(2)电平触发方式 当中断输入端出现1个中断请求并得到响应后,输入端必须及时撤除高电平。中断类型码:D7D6D5D4D3 D2D1D0 0 0 0 0 0 1 1 1 1,2.优先级的管理方式(1)完全嵌套方式 在对8259进行初始化后,没有设置其它优先级方式,则自动按此方式工作.特点:在全嵌套方式中,中断请求按优先级IR0IR7级进行处理,IR0级中断的优先级最高。当一个中断被响应时,中断类型码被放到数据总线上,ISR中的对应位ISn被置1,然后进入中断服务程序。一般情况下(除了中断自动结束方式外),在CPU发出中断结束命令(EOI)前,此对应位一直保持“1”。,(2)优先级自动循环方式 用在:多个中断源优先级相等的场合。特点:优先级是在变化的,一个设备中断处理完 后,它的优先级自动降为最低。由8259A的操作命令字OCW2决定。(3)特殊全嵌套方式 用于:多片级联方式,特殊全嵌套方式仅设置在主片中.特点:和全嵌套方式基本相同,不同的是:在处理某以及中断时,可响应同级中断,从而实现对同 级中断请求的特殊嵌套.,3.中断屏蔽方式(1)普通屏蔽方式 用OCW1命令将中断屏蔽寄存器IMR的相应位置“1”。(2)特殊屏蔽方式 用于中断处理程序中。当要允许优先级低的中断进入,可采用特殊屏蔽方式.可用OCW3的D6D5=11设置,此时除IMR中置1位对应的中断被屏蔽外,其它置0位对应的中断无论优先级高低都可得到相应。,(1)中断自动结束方式:用于系统中只有一片8259A,多个中断不会嵌套的情形。系统一进入中断处理,就将当前中断服务寄存器ISR的对应位清除。对8259A来说,好像已经结束了当前中断。在命令字ICW4中将AEOI(D1)位置“1”。(2)一般的中断结束方式:用在全嵌套的情形。CPU用OUT指令往8259A偶地址发一个EOI命令,8259A将使ISR最高非零IS位清0。结束当前正在处理的中断。,4.结束中断处理的方式(EOI),(3)特殊的中断结束方式,发一条特殊中断结束命令,命令中指出了要清除当前ISR的哪个IS位。往偶地址端口输出OCW2命令。OCW2中:EOI=1、SL=1、R=0是特殊中断结束命令。OCW2中:L2、L1、L0指出了要对哪个IS位复位。,EOI命令的使用,三.8259A的级联使用,主片:SP/EN接+5V从片:SP/EN接地。,级联方式:一片主8259,2片从8259,主 接5V,从8259 接地.1号从8259的INT接主8259的IR6 2号从8259的INT接主8259的IR4可管理22级中断,特殊嵌套方式的使用,设1号从8259:IR7有申请,并响应1号从8259向主8259的IR6发申请,并得到响应现在,1号从8259:IR0有申请,而IR0的优先级别高于IR7,应该响应IR0,应该允许IR0进入。解决办法:使用特殊全嵌套方式,四、8259A 的控制字和工作方式命令字:ICWi(i=14)操作命令字:OCWi(i=14)8259A的地址:偶地址端口(A0=0)奇地址端口(A0=1)1.8259A的初始化命令字 ICW1:芯片控制初始化命令字 ICW2:设置中断类型码的 ICW3:主片/从片的初始化命令字 ICW4:方式控制初始化命令字,(1)ICW1的格式(A0=0),ICW1:芯片控制初始化命令字。必须写入偶地址端口中。A0 D7 D6 D5 D4 D3 D2 D1 D0 D7D5:这几位在此系统中不用,为1为0都可以。D4:设置为1,指示ICW1的标志。D3(LTIM):设定中断请求信号的形式。为1,表示中断请求为电平触发方式,为0,表示中断请求为边沿触发方式。D2(ADI):在8086/8088中不起作用。D1(SNGL):指出8259A有否级联。为1,表示系统中有一片8259A,为1,表示系统中有多片8259A。D0(IC4):指出后面是否设置ICW4。使用ICW4时IC4必须为1。,0,(2)ICW2的格式(A0=1)ICW2是设置中断类型码的高5位初始化命令字,写入8295A的奇地址端口。(3)ICW3的格式(A0=1)ICW3是标志主片/从片的初始化命令字,指出主8259那个引脚连有从8259,对应位置一。为主片:A0 D7 D6 D5 D4 D3 D2 D1 D0,本片8259A为从片,ICW3的格式,指出从8259连在主8259那个引脚,由D2D1D0指出。(4)ICW4的格式(A0=1)ICW4为方式控制初始化命令字,写入奇地址 端口。,用ICW1设置,是否级连,请求信号格式,后面是否用ICW4,用ICW2设置中断类型码,是否为级连方式?,本片为主片吗?,设ICW3的高五位为佳,低三位为标识码,设ICW3的各位对应IR0IR7的连接情况,需要用ICW4吗?,用ICW4设置,是否为特殊全嵌套方式;缓冲方式;自动结束中断方式;8086/8088系统,结束,是,否,否,否,是,是,图 6-4 8259A的初始化流程,2.8259A的初始化流程,3.8259A的操作命令字:OCW1OCW3,(1)OCW1的格式(A0=1)OCW1称为屏蔽命令字,写入8259A的奇地址端口。当OCW1某位=1,表示对应的中断请求被屏蔽。,用于设置优先级循环方式和中断结束方式,写入偶地址单元。R=1,优先级循环方式;R=0,非循环方式。EOI=1,使当前ISR的对应位ISn复位。SL=1,L2、L1、L0有效。在ICW4中,若AEIO=1,自动清除当前ISn。AEIO=0,Isn要用EOI清除。,(2)OCW2的格式(A0=0),(3)OCW3的格式(A0=0),P=1时,表示查询。RR=1,RIS=0,对IRR寄存器的读出;RR=1,RIS=1,对ISR寄存器的读出。若要读IMR,不须设OCW3的查询命令。IR4和IR1引脚上有中断请求,CPU执行一条输入指令,从奇地址端口读得以下查询字:,ESMM=SMM=1,置特殊屏蔽方式,8259A脱离当前优先级方式.ESMM=1,SMM=0,撤销特殊屏蔽方式,4.8259A那些寄存器内容可读出?设8259A地址80H,82H,1)读中断屏蔽寄存器IMR内容:中断屏蔽字 IN AL,82H;A0=12)要读出ISR或IRR的内容,必须设置OCW3中的P(D2)=1:(1)读IRR:设置OCW3:D1D0=10(2)读ISR:设置OCW3:D1D0=11执行输入指令 IN AL,82H,四.8259A使用举例例1:IBM PC/XT 8259A(P470),8259A初始化要求:,端口地址:20H21H8个中断请求信号:IR0IR7采用完全嵌套方式、0级最高,7级最低。设定0级请求对应中断号为8,1级为9,.7级为0FH。IRQ0:0000 1 000=08H IRQ1:0000 1 001=09H IRQ2:0000 1 010=08H.IRQ7:0000 1 111=0FH,8259A初始化编程:,INTA00 EQU 020H;8259A端口0INTA01 EQU 021H;8259A端口1.MOV AL,13H;ICW1:边沿触发.单片.要ICW4OUT 20H,ALMOV AL,8;ICW2:IRQ0中断类型为08HOUT 21H,AL MOV AL,9;ICW4全嵌套.8088系统OUT 21H,AL;普通EOI方式,(1)预制命令字:ICW1,ICW2.ICW3.ICW4 ICW1:边沿触发.单片.要ICW4,0 0 0 1 0 0 1 1=13H D4:设置为1,指示ICW1的标志。D3(LTIM):设定中断请求信号的形式。为0,表示中断请求为边沿触发方式。D2(ADI):在8086/8088中不起作用。D1(SNGL):指出8259A有否级联。为1,表示系统中有一片8259A,D0:(IC4):为1,表示系统为8086/8088,要用ICW4.,ICW2的格式:,D2D1D00 1 0 0 0 0 0 0=80H01000 0 0 0=80H:IRQ001000 0 0 1=81H:IRQ101000 0 1 0=82H:IRQ2.01000 1 1 1=87H:IRQ7,ICW4的格式:必须写到8259A的奇地址端口中.,0 0 0 0 1 0 0 1=09HICW4全嵌套.8088系统非自动结束,例2:教材P239例1:一片从8259的INT端连在主8259的IR3上,主8259的IR0和IR5端分别引入两个中断,从8259的IR2和IR3引入两个中断.主8259中断类型码为:40H,45H;中断服务程序的段基址为1000H,偏移地址为1050H和2060H.主8259端口地址为:FFE8H,FFE9H从8259中断类型码为:32H,33H;中断服务程序的段基址为2000H,偏移地址为5440H和3620H.从8259端口地址为:FFFAH,FFF9H,主8259A的初始化程序段:MOV AL,11H;定义ICW1,边缘触发,级联,单级,需ICW4 MOV DX,0FFE8H OUT DX,AL;ICW1送偶地址端口MOV AL,40H;定义ICW2,使IRQ0的中断类型码为40HMOV DX,0FFE9H;送奇地址端口OUT AL,DXMOV AL,08H;定义主片ICW3,IR5上接从片 OUT DX,AL;ICW3送奇地址端口MOV AL,11H;定义ICW4,8086,特殊完全嵌套方式OUT DX,ALMOV AL,0D6H;定义OCW1,屏蔽IR0,IR3,IR5以外的中断申请OUT DX,AL MOV AL,20H;定义OCW2,普通EOI方式OUT DX,AL,(1)中断类型为40H的中断向量设置:服务程序的入口地址:1000H:1050H 40H*4=00C8H 00C8H+2=00CAH PUSH DS XOR AX,AX;清AX MOV DS,AX MOV AX,1050H MOV 00C8H,AX;设中断服务程序的入口地址,送IP MOV AX,1000H MOV 00CAH,AX;送CS POP DS,例3:1片8259A工作于全嵌套方式 若要求在IR3的中断服务中,允许IR5进入,该如何作?,1)在IR3中断服务程序开始 关中断(CLI)用OCW3设置特殊屏蔽方式取原屏蔽字保存,将IMR3,IMR4,IMR6,IMR7置1,允许IR5进入开中断(STI)2)在IR3中断服务程序适当处恢复原屏蔽字用OCW3撤销特殊屏蔽方式,思考题,1.8088/8086中断向量表的作用是什么?2.8259A中 IRR、IMR和 ISR三个寄存器的作用是 什么?3.某时刻8259A的IRR内容是08H(00001000B),说明_。某时刻8259A的ISR内容是08H,说明_。在两片8259A级连的中断电路中,主片的第5级IR5 作为从片的中断请求输入,则初始化主、从片时,ICW3的控制字分别是00100000和 00000101.,第2节 计数器/定时器8253,计数器/定时器8253特点 三个通道,可单独使用片内寻址 A1 A0=00、01、10、11 对应:通道0、1、2和控制口地址工作方式:6种,一、微机定时方法 1.软件定时延迟子程序 2.硬件定时用计数器/定时器8253 二、可编程计数器/定时器的工作原理 功能:一是为计数;一是为定时。8253的用处:1)在多任务的分时系统中用来作为中断信号实 现程序的切换;2)可以往I/O设备输出精确的定时信号;3)作为一个可编程的波特率发生器;4)实现时间延时。,计数器/定时器的工作特点 1)门脉冲控制时钟输入;2)用门脉冲来重新启动计数;3)用门脉冲停止计数;4)单一计数;5)循环计数.计数初始值=时钟频率*T,8_2_1 8253芯片内部结构,1.数据总线缓冲器 往计数器设置计数初值;从计数器读取计数值;往控制寄存器设置控制字。2.读/写逻辑电路 A1 A0:端口选择 0 0:通道0(0号计数器)0 1:通道1(1号计数器)1 0:通道2(2号计数器)1 1:控制字寄存器,3.通道0、通道1、通道2 计数器0:CLK0计数器0的时钟输入。GATE0计数器0的门脉冲控制输入。OUT0计数器0的输出。计数器1 计数器2 定时系数(计数初值)n=定时时间t时钟频率fc=定时时间t/时钟脉冲周期Tc,编程结构,(2)8253的工作原理,4.控制寄存器 8253控制寄存器的格式,SC1 SC0 RW1 RW0 M2 M1 M0 BCD,1-计数值为BCD码格式0-计数值为二进制格式,M2 M1 M0 模式选择 0 0 0 模式0 0 0 1 模式1/1 0 模式2/1 1 模式3 1 0 0 模式4 1 0 1 模式5,0 0-对计数器进行锁存0 1-只读/写低8位字节 1 0-只读/写高8位字节1 1-只读/写低8位字节,再读/写高8位字节.,0 0-选计数器00 1-选计数器11 0-选计数器21 1-无意义,8-2-2.8253的工作模式(1)方式0计数结束产生中断 一次定时或计数,重写初值,启动新一轮的计数(2)方式1可编程的单脉冲(单稳)触发器 GATE边沿触发,启动新一轮计数(3)方式2分频器(速度波发生器)具有计数初值重装能力(4)方式3方波发生器 具有计数初值重装能力(5)方式4软件触发的选通信号发生器 一次定时,重写初值,启动新一轮的计数(6)方式5硬件触发的选通信号发生器 GATE边沿触发新一轮计数,图 8-22 方式0计数结束产生中断,图 8-22 单脉冲触发器,高,图 8-23 分频器,图 8-23 方波发生器,图 8-23 软件触发的选通信号发生器,图 8-23 硬件触发的选通信号发生器,8253初始化方法:控制字计数初值:已知:CLK 的频率fc与定时的时间t.计数初值:n=fc t 例1:fc=1MHZ,最大计数初值:65536 一个定时器最大定时时间:N/fc=65536/106=0.065536s,8-2-3 8253应用举例,例2:设定时器0、定时器1工作于方式2,外部提供一个时钟,频率f=2MHZ。要求定时器1每5ms产生一个脉冲,定时器0每5s产生一个脉冲。1).一个定时器的最大定时时间:65536/(2*106)=0.032768 s=32.768ms2).将定时器1的CLK1接2MHZ时钟,计数初值:3).将定时器1的OUT1端接到定时器0的CLK0端,定时器0的计数初值:,例3:计数器2输出600HZ方波,送扬声器。工作于模式3.,发声子程序:,SSP PROC NEAR;8253初始化:MOV AL,10110110B;计数器2,模式3,初值16位,二进制OUT 43H,ALMOV AX,1983;计数初值=1.19MHZ600HZ=1983OUT 42H,AL;送计数初值低位字节MOV AL,AHOUT 42H,AL次;送计数初值高位字节,8255控制程序:IN AL,61H;读8255的PB口原输出值 MOV AH,AL;保留到AH OR AL,03H;使PB0PB1均为1 OUT 61H,AL;打开GATE2门,输出方波到扬声器 SUB CX,CX;CX为循环次数,最大为216L:LOOP L;延时 DEC BL;BL为子程序入口条件 JNZ L;BL=6,发长声(3S),BL=1发短声(0.5S)MOV AL,AH;取回8255的PB口原输出值 OUT 61H,AL;恢复8255PB口,停止发声 RETSSP ENDP,例4:定时/计数器 8253与 8086/8088CPU 相连构成完整的定时、计数或脉冲发生器系统。要求能完成的功能是:1)利用通道0完成对外部事件计数功能,计满100次向CPU发中断请求。2)利用通道1产生频率为1KHz的方波。3)利用通道2作标准时钟,定时1秒,输出接IR2。,(1)8253的数据线(D7D0)与CPU的高8位数据线(D15-D8)相连,所以8253的端口地址必须是奇地址(A0=1)。(2)通道0定义为工作方式0,完成计数.通道0的计数初值应为:n0=100 控制字:00 01 0000=10H(3)将通道1定义为工作方式3,控制字=0111 0110=76H,从CLK1输入2.5MHz的时钟脉冲,OUT1输出频率为1KHz的方波,而输出方波的周期1ms。通道1的计数初值:n1=f1*t1=2.5106 1 10-3=2500=09C4H。,(4)通道2应定义为方式0,控制字=1011 0001=0B1H,每秒钟利用OUT2向CPU发出一次中断请求,由于输入时钟频率为1KHz,计数初值应为:n2=f2*t2=1000*1=1000。8253的控制端口地址:66H通道0的端口地址:60H通道1的端口地址:62H通道2的端口地址:64H 8253-0 EQU 60H 8253-1 EQU 62H 8253-2 EQU 64H 8253-C EQU 66H,STT:MOV DX,8253-C;8253控制口地址MOVAL,10HOUTDX,AL;通道0工作在方式0MOVDX,8253-0;8253通道0地址MOVAL,64HOUTDX,AL;给通道0送计数值MOVDX,8253-CMOVAL,76HOUTDX,AL;通道1工作在方式3MOVDX,8253-1;8253通道1地址MOV AX,09C4H OUTDX,AL;给通道1送计数初值低8位MOVAL,AHOUTDX,A;给通道1送计数值高位MOVDX,8253-CMOV AL,0B1HOUTDX,AL;通道2工作在方式0,MOVDX,8253-2;通道2地址MOVAX,1000H;1000的BCD数1000HOUTDX,AL;给通道2送计数初值的低8位MOVAL,AHOUTDX,AL;给通道2送计数值的高8位MOVDX,8259A偶MOVAL,13HOUTDX,AL;设ICW1,边缘触发,需ICW4MOVDX,8259A奇 MOVAL,50H;设ICW2,0通道中断类型码为50HOUTDX,AL;通道2的中断类型码为52HMOVAL,03 OUTDX,AL;设ICW4,非自动EOI方式MOVAL,0FAH;OCW1,屏蔽IR0,IR1以外的输入OUTDX,ALSTIFF:HLTJMPFF,IR2时钟程序:,S1 DB?;秒S2 DB?;分S3 DB?;时.IR2_TIMER:INC S1 CMP S1,60 JNC EXIT;不满60秒,退出 MOV S1,00H INC S2;分单元加一 CMP S2,60;不满60分,退出 JNC EXIT MOV S2,00H;时单元加一 INC S3,JMP S3,24 JNC EXIT MOV S3,00H CALL DISPLAY;显示时间.STI EXIT:IRET,思考题:,l.微机中实现定时控制的主要方法是什么?2.8253每个计数通道与外设接口有哪些信号线,每个信号的用途是什么?3.8253每个通道有_ 种工作方式可供选择。若设定某通道为方式0后,其输出引脚为电平;当_后通道开始计数,信号端每来一个脉冲就减1;当_则输出引脚输出电平,表示计数结束。8253的CLKO接15MHZ的时钟,欲使OUT。产生频率为300kHZ的方波信号,则8253的计数值应为_,应选用的工作方式是_.4.试按如下要求分别编写 8253的初始化程序,已知 8253的计数器0 2和控制字IO地址依次为04H07H。(l)使计数器 11作在方式0,仅用 8位二进制计数,计数初值为 128。(2)使计数器 O工作在方式 1,按 BCD码计数,计数值为 3000。(3)使计数器2工 在方式 2,计数值为 02F0H。5.设8253计数器02和控制字的I/O地址依次为F8HFBH,说明如下程序的作用。mov al;33h out ofbh,al mov al,80h out ofsh,al mov al,50h out of8h,al,习题1分析:用通道 0 作定时器,初始编程使通道0按方式3工作,每秒产生18.2次输出信号,该信号送到8259A中断控制器的IRQ0输入端。每55ms产生一次中断请求,8086对其计数,用来计算时间。通道 1 用作动态RAM刷新定时,每隔5.12us产生一次输出信号,请求动态刷新。OUT1输出产生DMA请求信号送8237,由8237对动态RAM刷新。(8253地址为40H43H)通道0:地址为40H,控制字为36H,工作方式3,计数初值为0通道1:地址为41H,控制字为 54H,工作方式2,计数初值为12HTIMEMODECTRLEQU43HTIMEADDEQU40HCTRL1DB36HCTRL2DB 54HTIME1DW0TIME2DW12H,MOVBP,TIMEMODECTRLMOVAL,CTRL1;送通道0控制字MOVBYTE PTR BP,ALMOVAL,CTRL2;送通道1控制字MOVBYTE PTR BP,ALMOVBP,TIMEADD;通道0端口地址送BPMOVAX,TIME1MOVBYTE PTR BP,ALMOVBYTE PTR BP,AH;送通道0时常数INCBP;通道1端口地址送BPMOVAX,TIME2MOVBYTE PTR BP,ALMOVBYTE PTR BP,AH;送通道1时常数 INCBP,第3节 DMA控制器8237A,主要内容:DMA控制器的一般结构和概要DMA控制器8237A的原理8237A的编程和使用,基本问题:,说明在DMA方式时内存往外设传输数据的过程。DMA控制器初始化工作包括哪些内容?DMA控制器在什么时候作为主模块?什么时候作为从模块?为什么CPU对DMA控制器提出的总线响应要比中断请求响应快?,DMA控制器 DMA 控制器可以象CPU那样得到总线控制权,用DMA方式实现外部设备和存储器之间的数据高速传输。一个DMA控制器通常可以连接一个或几个输入/输出接口,每个接口通过一组连线和DMA控制器相连。将DMA控制器中和某个接口有联系的部分为一个通道。而一个DMA控制器一般由几个通道组成。,DMA方式,外设向內存传输数据的过程:,当一个接口中有数据要输入时,就往DMA控制器发个DMA请求;DMA控制器接到请求后,便往控制总线上发一个总线请求;如果CPU允许让出总线,则发一个总线允许信号;DMA控制器接到此信号后,就将地址寄存器的内容送到地址总线上,同时往接口发一个DMA回答信号,并发一个1/O读信号和一个内存写信号;接口接到DMA回答信号以后,将数据送到数据总线上,并撤除DMA请求信号;内存在接收到数据以后,一般往DMA控制器回送一个准备好信号,于是,DMA控制器的地址寄存器内容加1或减1,计数器的值减1,而且撤除总线请求信号,这样,就完成了对一个数据的DMA输入传输。,DMA传输结束时,往接口发一个结束信号,向CPU交回总线控制权。其状态寄存器的传输结束标志置“1”。,查询时,CPU在主程序中通过查询状态寄存器的传输结束标志,决定是否进行后续处理。中断方式时,结束信号可作为送到外设的中断请求信号(也可以送到总线控制逻辑)。后续程序必须检查出错标志,确定是否重新传输、打印出错信息。注意:DMA控制器不能提供中断类型号。,图 6-8 DMA控制器内部编程结构和外部连接,8.3.1 8257芯片内部结构,数据总线缓冲器读写逻辑电路工作方式寄存器状态寄存器优先选择逻辑4个DMA通道,5.8257工作方式寄存器和状态寄存器,DMA控制器内部包含一个控制器寄存器和一个状态寄存器,一个地址寄存器和计数器。多通道时,控制寄存器和状态寄存器为本多个通道所公用,而地址寄存器和计数器为本每个通道所独有。DMA的初始化:(1)将数据传输缓冲区的起始(结束)地址送到地址寄存器中。(2)将传输的字节数(字数)送到计数器中。,三、8257A的编程和使用,第8章小节,一.中断控制器1.中断的概念 中断:外部中断(硬件中断):NMI.INTR 内部中断(软件中断):INTn.INTO.单步 中断过程:中断请求.中断响应.中断处理.中断返回,2.8086中断系统 1)中断类型:硬件中断(外部中断)内部中断:与硬件无关,不执行中断响应周期,除单步中断外,内部中断不可屏蔽,优先级高于外部中断2)中断向量表:00000003FFH3.中断响应过程1).可屏蔽中断响应过程 响应条件:TF=1.无总线请求.当前指令结束 CPU发中断请求信号后,CPU回答信号INTA 8059给出中断类型码,CPU由中断类型码找到中断向量的地址指针,CPU保护断点:将CS.IP.标志寄存器内容入栈清IF.TF查中断向量表,取中断服务程序首地址执行中断处理程序中断返回2)非屏蔽中断响应过程 由NMI引入,CPU优先响应,类型码为2.3).内部中断响应 由指令或硬件给出,无外部逻辑输入 无中断响应周期 与IF无关 除单步中断外,内部中断优先级高于外部中断,4.8259中断控制器 可编程中断控制器:单片管理8级 级联时:9片管理64级中断 初始化命令字:ICW1ICW4 操作命令字:OCW1OCW31)设置优先级方式 全嵌套方式.特殊全嵌套方式.优先级自动循环方式2)屏蔽中断源方式普通屏蔽方式,用OCW1屏蔽,特殊屏蔽方式3).结束中断方式 自动结束方式.非自动结束方式O,二.计数器/定时器82531.基本结构 3个通道:0、1、2 内部逻辑:A组.B组2.端口的选通 2根地址线A1A0与读写信号3.工作方式 方式0、1、2、4、54、控制字5、计数初值的确定,第8章思考题:,1、说明在DMA方式时内存往外设传输数据的过程。2、DMA控制器初始化工作包括哪些内容?数值内容:写入要访问的内存地址起始值 写入传输的字节数功能编程:命令寄存器、模式寄存器、请求寄存器 屏蔽寄存器、状态寄存器 3、DMA控制器在什么时候作为主模块?什么时候作为从模块?4、CPU对DMA控制器提出的总线响应要比中断请求响应快?因为:,5.微机中实现定时控制的主要方法是什么?6.8253每个通道有_ 种工作方式可供选择。若设定某通道为方式0后,其输出引脚为电平;当_后通道开始计数,信号端每来一个脉冲就减1;当_则输出引脚输出电平,表示计数结束。8253的CLKO接15MHZ的时钟,欲使OUT。产生频率为300kHZ的方波信号,则8253的计数值应为_,应选用的工作方式是_.7.8088/8086中断向量表的作用是什么?8.8259A中 IRR、IMR和 ISR三个寄存器的作用是 什么?9.某时刻8259A的IRR内容是08H(00001000B),说明_。某时刻8259A的ISR内容是08H,说明_。在两片8259A级连的中断电路中,主片的第5级IR5 作为从片的中断请求输入,则初始化主、从片时,ICW3的控制字分别是00100000和 00000101.,