收藏 分享(赏)

第8章计数器定时器与DMA控制器.ppt

上传人:j35w19 文档编号:8221058 上传时间:2019-06-15 格式:PPT 页数:86 大小:1.11MB
下载 相关 举报
第8章计数器定时器与DMA控制器.ppt_第1页
第1页 / 共86页
第8章计数器定时器与DMA控制器.ppt_第2页
第2页 / 共86页
第8章计数器定时器与DMA控制器.ppt_第3页
第3页 / 共86页
第8章计数器定时器与DMA控制器.ppt_第4页
第4页 / 共86页
第8章计数器定时器与DMA控制器.ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

1、1,第8章 计数器/定时器与DMA控制器,8.1 计数器/定时器的工作原理 8.2 可编程计数器/定时器8253 *8.3 DMA传送的基本原理 *8.4 DMA控制器8237A,8.1 计数器/定时器的工作原理,8.1.1 微机系统中的定时,上课45分钟/节、RTC,时钟、节拍、操作系统时间片,3,8.1.1 微机系统中的定时,微机系统常常需要为处理器和外设提供时间标记,或对外部事件进行计数。 内部定时是计算机本身运行的时间基准或时序关系,计算机每个操作都是按照严格的时间节拍执行的。外部定时是外部设备实现某种功能时,本身所需要的一种时序关系,8.1.2 定时方法软件定时 它是利用CPU内部定

2、时机构,运用软件编程,循环执行一段程序而产生的等待延时。 硬件定时 单稳延时电路产生定时或延时;,采用可编程通用的定时/计数器。,8.1.3 可编程计数器/定时器的工作原理,计数器:即在设置好计数初值后,便开始对外部触发脉冲作减1计数,减为0时,输出一个信号 。,定时器:即在设置好定时常数后,便对外部时钟信号作减1计数,并按定时常数不断地产生时钟周期整数倍的定时间隔 。,计数器,计数输出寄存器,计数脉冲输入CLK,门控脉冲输入GATE,输出OUT,图8-1 可编程计数器/定时器的基本结构以及与系统总线的连接,7,8.2 可编程计数器/定时器8253,8.2.1 8253内部结构及引脚功能8.2

3、.2 8253的工作方式及特点8.2.3 8253的编程8.2.4 8253的应用举例,8.2.1 8253内部结构及引脚功能 8253的内部结构,3个计数器、各有6种工作模式,16位初值,如何通过8位总线传送?,9,8253的引脚功能,8253的引脚功能,表8-1 8253计数器的选择与操作,8.2.2 8253的工作方式及特点,6种工作方式可供选用 区分这6种工作方式的主要标志: 一是输出波形不同; 二是启动计数器的触发方式不同; 三是计数过程中门控信号GATE对计数操作的控制不同。,计数结束OUT输出由低到高翻转 8253用作计数器时一般工作在方式0。计数结束后输出端产生的输出信号可作为

4、中断申请信号。,方式0计数结束产生中断(要求),低电平则暂停计数,高电平则接着计数,8253方式0工作时序图,设 定 工 作 方 式,设 定 计 数 初 值,计 数 值 送 入 计 数 器,计 数 过 程,计 数 结 束,如CW=10H,15,15,方式0特点,OUT从写入控制字时变低,写入初值开始计数,计数到变高,可作中断申请信号。 初值有效一次 重写入初值后立即有效,重新计数。 计数过程中,GATE为低电平时,暂停计数。 设定计数值为N,则实际计数N1个CLK脉冲。 CPU第一个CLK脉冲到来,将初值送入初值寄存器,而第二个CLK脉冲送入计数器开始计数。,方式1:可重复触发的单稳态触发器

5、负脉冲宽度N CLK,计数没有结束再触发,则重新开始计数,8253方式1工作时序图,设 定 工 作 方 式,设 定 计 数 初 值,硬 件 启 动,计 数 值 送 入 计 数 器,计 数 过 程,计 数 结 束,18,18,方式1 特点,由GATE触发,OUT产生单稳负脉冲。 初值有效多次 重写初值,不影响当前计数过程;若GATE重新触发则按新值开始计数。,方式2可对输入时钟频率进行分频,分频因子为计数初值N,即输出频率=时钟频率/计数初值N。输出频率的占空比为( )%,即一个输出周期中,高电平所占比例为N-1个时钟脉宽,负脉冲占一个时钟脉宽 。,方式2:分频器(要求),8253方式2工作时序

6、图,低电平则暂停计数,高电平则重新计数,相当于复位,21,21,方式2 特点,能够连续工作,每输入N个CLK信号,OUT输出一负脉冲。即对CLK脉冲N分频。 在计数过程中,重写初值,不影响本次计数,但,从下一个周期按新的计数值计数。 GATE变低,停止计数。,方式3:方波发生器,方波指占空比为50%的脉冲,即一个周期,正脉宽和负脉宽各占一半时间 。若是单数,则正脉宽多一个时钟周期。其余同方式2。,23,8253方式3工作时序图,24,24,方式3 特点,与方式2一样, 周期性工作.只是输出为方波. 计数值为奇数时,前面的高电平比后面的低电平多一个CLK脉冲. GATE变低,停止计数。,方式4:

7、软件触发的选通信号发生器,方式4中,当计数器减到0时输出电平翻转,再经过一个时钟周期,输出电平又翻回原来状态,计数结束。计数初值不会自动装入,要使计数器继续计数,就必须通过软件重新装入计数初值 。,8253方式4工作时序图,低电平则暂停计数,高电平则重新计数,相当于复位,27,27,方式4 特点,由写入初值来触发计数器开始工作。 初值有效一次,方式5与方式4相类似,只是写入计数初值之后要靠GATE的上升沿触发启动,才能将计数初值寄存器的内容送到计数执行部件进行减1操作 。输出负脉冲宽度1 CLK,方式5:硬件触发的选通信号发生器,8253方式5工作时序图,30,30,方式5 特点,写入计数初值

8、,计数器并不开始计数,而由GATE信号的上升沿触发启动初值有效一次,8253六种工作方式的比较,32,各种工作方式的输出波形,8.2.3 8253编程 设定方式控制字,34,00 计数器0 01 计数器1 10 计数器2 11 非法(8254为读回命令) (P276-277),00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节后读写高字节,000 方式0 001 方式1 010 方式2 011 方式3 100 方式4 101 方式5,0 二进制1 十进制(BCD),控制字写入控制字I/O地址(A1A011),8.2.3 8253编程 设定方式控制字,35,35,8

9、253初始化,两个内容: (1)写方式字到控制口 (2)向选定的计数器按方式的要求写入计数初值。,设定计数初值,例8-1 设8253计数器0工作于方式3下,计数初值为6000(十进制格式),试写出其初始化程序。(设8253计数器0,计数器1,计数器2及控制端口地址分别为40H43H。) 根据题目要求,8253方式控制字应为00110111,具体程序如下:,37,设定计数初值,MOV DX,43H ;设定控制端口MOV AL,37H ;写入控制字OUT DX,ALMOV DX,40H ;设计数器0MOV AL,0 ;写计数初值低字节OUT DX,ALMOV AL,60 ;写计数初值高字节OUT

10、DX,AL,38,例8-2 假定8253的4个端口地址分别为310H、312H、314H、316H,输入脉冲频率为2MHz,编写出用计数器0输出频率为2kHz方波的初始化程序。分析: 根据题目要求,采用计数器0、工作方式3、二进制计数。 计数初值N=(2106)/(2103)=1000。 方式控制字为00110110B,即36H。,MOV DX,316H MOV AL,36H OUT DX,AL MOV AX,1000 MOV DX,310H OUT DX,AL MOV AL,AH OUT DX,AL,39,例8-3,MOV AL,76H OUT 76H,AL MOV AX,1000 OUT

11、72H,AL MOV AL,AH OUT 72H,AL MOV AL,36H OUT 76H,AL MOV AX,2000 OUT 70H,AL MOV AL,AH OUT 70H,AL,设系统为8253分配的端口地址为70H76H,其中76H为控制字寄存器端口地址,70H、72H、74H分别为计数器0、1、2的端口地址。若输入脉冲频率为2MHz,编写出用计数器0输出频率为1Hz方波的初始化程序。分析:由于输入时钟频率为2MHz,而输出方波频率为1Hz,计算出计数器初值N=(2106)/1=2106。此数超出16位计数器所能够表示的范围。为了解决这一问题,可先通过计数器1将2MHz的输入脉冲变

12、成2kHz方波,然后用OUT1输出的方波作为计数器0的输入时钟。计数器1的计数初值N=(2106)/(2103)=1000,计数器0的计数初值M=(2103)/1=2103。,8.2.4 8253的应用举例,*例8-4 IBM PC/XT系统板上8253的3个计数器的使用。 分析:IBM PC/XT机中,8253与系统总线的连接如图8-11所示。,*例8-5 8253的3个计数器串级连接起来,为某A/D子系统提供可调用的启动采样频率信号。 分析:连接电路如图8-12所示。设8253的计数器0,1,2分别工作在方式2(分频器)、方式1(单稳触发器),方式3(方波发生器)。3个计数器的初始值分别为

13、L,M,N。系统时钟频率为F。,42,方波,频率 ,正脉宽,这期间(H)允许采样,频率,设8253的端口地址为304H,305H,306H,307H。初始值L,N为二进制数,且小于256,M为BCD数,且大于100。设计:8253的初始化程序段如下MOV AL,14H OUT 307H,AL ;设计数器0 为方式2,低8位二进制计数 MOV AL,L OUT 304H,AL ;置初值L,44,MOV AL, 73H OUT 307H,AL ;设计数器1为方式1,16位BCD码数计数 MOV AX,M OUT 305H,AL ;置初值M低8位 MOV AL,AH OUT 305H,AL ;置初值

14、M高8位 MOV AL,96H OUT 307H,AL ;设计数器2为方式3,低8位二进制数计数 MOV AL,N OUT 306H,AL ;置初值N,例8-6 图8-13所示为一自动计数系统。当工件从光源与光敏电阻之间通过时,CLK0端即可接收到一个脉冲信号,由计数器0计数。 每当有80个工件通过后,由输出端OUT0输出一个负脉冲作为中断请求信号通知CPU。 CPU在处理该中断的中断服务程序中启动计数器1,由OUT1产生2000Hz的方波驱动蜂鸣器发声,提示工件以满80个,5秒后扬声器停止发声。,46,光敏电阻,驱动器,扬声器,CLK1 GATE1,5 MHz 8255 PA4,OUT0 C

15、LK0,TNT,OUT1,光源,工件,R,+5V,图8-13 自动计数系统,设计:程序清单如下MOV AL,15H ;写方式控制字(设计数器0工作于方式2)OUT 43H,AL MOV AL,80H ;设计数0的计数初值为80OUT 40H,ALSTI ;置IF1,开中断 LOOP:HLTJMP LOOP,48,;中断服务程序MOV AL,010H ;置GATE11(80H为8255PA口地址)OUT 80H,ALMOV AL,77H ;写方式控制字(设计数器1工作于方式3) OUT 43H,ALMOV AL,0 ;写计数初值低位OUT 41H,ALMOV AL,25H ;写计数初值高位OUT

16、 41H,ALCALL D5S ;调5秒延时MOV AL,0OUT 80H,AL ;置GATE01,使计数器1停止工作,49,练习,编程将8253计数器0设置为模式1,计数初值为20H。计数器1设置为模式2,计数初值为2030H。 某系统中8253芯片的通道02和控制端口的地址分别为FFF0H-FFF3H。定义通道0工作在方式2,CLK02MHZ,要求输出OUT0为1KHZ的速率波;定义通道1工作在方式0,其CLK1输入外部计数事件,每计满100个向CPU发出中断请求。试写出两个通道的初始化程序。,*8.3 DMA传送的基本原理,8.3.1 DMA传送的特点 DMA方式可以实现外部设备与存储器

17、之间的数据高速传输 DMA传送主要用于需要高速大批量数据传送的系统中,以提高数据的吞吐量 DMA传送方式的优点是以增加系统硬件的复杂性和成本为代价的 DMA传送虽然脱离CPU的控制,但并不是说DMA传送不需要进行控制和管理,8.3.2 DMA传送的机制当外设准备好数据时,通过硬件提出DMA请求,进而向系统提出总线占有请求。在系统同意让出总线的情况下,高速外设就可以利用总线在硬件的控制下完成数据交换,速度非常快。具有这种功能的硬件是DMA控制器DMAC。,52,DMAC可以通过下面的方式获得总线控制权 1周期挪用(Cycle Stealing) 2周期扩展 3CPU停机,54,1周期挪用(Cyc

18、le Stealing) 在这种方式中,DMAC在处理器不访问存储器或I/O端口时控制总线 2周期扩展 在这种方式中,DMAC在处理器不访问存储器或I/O端口时控制总线,55,3CPU停机 CPU停机是指在DMA操作期间,CPU交出总线控制权,由DMA控制器接管总线,完成数据传送。 这期间CPU不能使用总线,只能进行内部操作。在上述三种方式中,“CPU停机”是DMA占用总线最简单常用的方式。,以数据输入过程为例,CPU停机方式下DMA的工作过程如下: (1)当外设需要输入数据时,首先由I/O接口电路向DMA控制器发出DMA操作请求信号。 (2)DMA控制器接收到外设的请求后,向CPU发出总线请

19、求信号。 (3)若CPU予以响应,将向DMA发回总线响应信号,同时出让总线的控制权,由DMA控制器接管总线。,57,(4)DMA控制器接管总线后,向I/O端口发出DMA响应信号,并设置读写信号及存储器地址信号。 (5)接口接到响应信号后,将数据送往数据总线,并撤销DMA请求信号。 (6)存储器接收数据后,DMA控制器进行地址修改和字节计数,并撤销总线请求信号,通知CPU归还总线控制权,完成一次DMA操作。,DMA传送流程,8.3.3 DMA传送的模式 单字节传送模式 单字节模式下,只能一个字节一个字节地传送(或校验或检索),每传送一个字节DMAC必须重新向CPU申请占用总线。 一般是在DMAC

20、中设置字数计数器,DMA传送时,每传送一个字节数据,计数器减1,并释放总线,将控制权还给CPU 。,60,数据块传送模式在数据块传送的整个过程中,只要DMA传送一开始,DMAC始终占用总线,直到数据传送结束或校验完毕或检索到“匹配字节”,才把总线控制权还给CPU 请求传送模式 DMAC控制总线以后,每传送完一个字节,都由DMAC检测外设是否有继续传送的要求,8.4 DMA控制器8237A,功能: (1)4个独立的DMA通道,每个通道可分别进行数据传送,一次传送最大达64MB,能够实现存储器与外设间或存储器两个区域间的数据传送。,62,功能: (2)每个通道的DMA请求可以分别允许和禁止,具有不

21、同的优先级,并且每个通道的优先级可以是固定的,也可以是循环的。 (3)8237A具有4种传送方式:单字节传送方式、数据块传送方式、请求传送方式和级联方式。级联以后可以扩充DMA通道。,8.4.1 8237A的内部结构及引脚功能,表8-2 8237A控制器的寄存器口地址,8.4.2 8237A的工作过程与工作方式 18237A的工作过程,28237A的工作方式 (1)通道的优先级问题 (2)工作模式 单字节传送模式 数据块传送模式 请求传送模式 级联模式 (3)操作类型 DMA读,用于把数据从存储器中读出,写入外设。 DMA写,用于将数据从外设中读出,写入存储器中。 DMA校验,是一种空操作,并

22、不是真正的DMA传送,只产生时序。地址信号、外设可以利用这样的时序进行校验。,8.4.3 8237A的编程 1方式控制寄存器,2命令寄存器,3状态寄存器,4请求寄存器,5屏蔽寄存器,6综合屏蔽寄存器,7软件命令8237A有三种软件命令,它们只需要向相应地址写入一个数据即可,而写入什么数据却无关紧要。 (1)清除高/低触发器(F/L触发器) (2)软件复位命令(主清除命令) (3)清屏蔽寄存器命令,8.4.4 8237A的应用举例,例8-9 用0通道从磁盘输入32KB的数据块,传送到内存08000H开始的区域(增量传送),采用块传送方式,传送完不自动预置,外设的DREQ和DACK均为高电平有效。

23、 设定8237A端口地址为00H0FH,初始化程序如下:,76,OUT 0DH, AL ;写入总清除命令 MOV AL, 00H OUT 00H, AL ;写入0通道基地址和当前地址寄存器的低8位 MOV AL,80H OUT 00H, AL ;写入0通道基地址和当前地址寄存器的高8位 MOV AL, 00H OUT 01H, AL ;写入0通道基字节和当前字节寄存器的低8位 MOV AL, 80H OUT 01H, AL ;写入0通道基字节和当前字节寄存器的高8位 MOV AL,84H OUT 0BH,AL ;写入模式控制字(块传送、地址增量、写传送、不自动预置) MOV AL, 00 OU

24、T 0AH,AL ;写入屏蔽寄存器(清除通道0的屏蔽) MOV AL, 0C0H ;写入命令寄存器(DREQ、DACK为高电平有效,固定优先级) OUT 08H,AL,例8-10 用8237A通道0对动态存储器进行刷新,每隔15s刷新一次,利用8253实现15s定时,试编出动态刷新程序。MOV AL,0FFH ;写入通道0计数初值为FFFFH OUT 01H,AL OUT 01H,AL MOV AL,58H ;写入模式控制字(单字节、地址递增、读传送、自动预置),78,OUT 0BH,AL MOV AL,00H ;写入命令寄存器 OUT 08H,AL OUT 0AH,AL ;写入屏蔽寄存器(清

25、除通道0的屏蔽位) MOV AL,54H ;设8253计数器1为方式2,只访问低位字节 OUT 43H,AL MOV AL,18 ;设计数器1定时周期为15s OUT 41H,AL,例8-8 对IBM PC/XT的8237A进行初始化和测试的程序段加注释说明。在IBM PC/XT微型机中,8237A占据00H0FH16个端口地址。它的通道0用来对动态RAM刷新,通道1提供网络通信传输功能,通道2和通道3分别用来进行软盘驱动器和硬盘驱动器与内存之间的数据传输。,80,系统采用固定优先级。4个DMA请求信号和应答信号中,只有DREQ0、DACK0是和系统主板相连的,而DREQ1DREQ3和DACK

26、1DACK3接到总线扩展槽,与对应的网络接口板、软盘接口板相关信号连接。,;对8237A进行初始化的程序段MOV AL,04OUT 08H,AL ;发控制命令,关闭8237AMOV AL,00OUT 0DH,AL ;发复位(总清)命令MOV DX,0 ;取通道0地址寄存器的端口地址MOV CX,04MOV AL,0FFH,82,WRITE: OUT DX,AL ;写地址低8位(先/后触发器在总清时已清除)OUT DX,AL ;写地址高8位,这样,16位地址值为0FFFFHINC DXINC DXLOOP WRITE ;使4个通道地址寄存器的值均为0FFFFH,MOV AL,58H ;对通道0模

27、式选择:单字节读传输,地址加1 OUT 0BH,AL;变化,设置自动预置功能 MOV AL,41H ;对通道1模式选择:单字节校验传输,地址加 OUT 0BH,AL;1变化,无自动预置 MOV AL,42H;对通道2模式选择:同通道1 OUT 0BH,AL,84,MOV AL,43H;对通道3模式选择:同通道1 OUT 0BH,AL MOV AL,00H ;设置控制命令:DACK为低电平有效,DREQ OUT 08H,AL ;为高电平有效,固定优先级,启动工作 MOV AL,00H OUT 0FH,AL ;设置综合屏蔽命令:对4个通道清除屏蔽,;对8237A通道13地址寄存器的值进行测试的程序段 MOV DX,02 ;取通道1的地址寄存器端口地址 MOV CX,03 READ:IN AL,DX;读地址低8位 MOV AH,AL IN AL,,DX ;读地址高8位 CMP AX,0FFFFH ;比较读取的值与写入的0FFFFH是否相等,86,JNZ HHH ;若不等,则转HHH INC DX INC DX LOOP READ ;对3个通道均测试 ;后续处理 HHH:HLT ;测试出错,停机等待,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报