第六章 DMA控制器和定时计数器

可请求DMA传送。

程序中,将取数的存储单元的首地址87440H分别写到页寄存器(外加的三 态输出寄存器)和DMAC通道1的高低字节寄存器中。这里每次传送一个字节, 每传送100个字节循环。

为避免影响其它通道,开始也可以不用总清命令,可以换成只清字节指针 触发器的命令,即:

MOV AL,0

OUT DMA+12,AL

应当指出,DMA方式传送数据具有最高的传送速度,但连接DMAC是比较复杂的。在实际工程应用中,除非必须使用DMAC,否则就不使用它,而采用查询或中断方式进行数据传送。

习题与思考:

1.Intel8237占几个端口地址?这些端口在读/写时操作过程中的作用是什么? 2.试说明由Intel8237控制,把内存中的一个数据块向接口传送的过程。

3.某8086系统中使用8237完成从存储器到存储器的数据传送,已知源数据块首地址的偏 移地址值为1000H,目标数据块首地址的偏移地址值为1050H,数据块长度为100字节。 试编写初始化程序,并画出硬件连接图。

4.某8086系统中使用8237完成从存储器到外设端口的数据传送任务,若已知通道0的地 址寄存器、字节计数器、方式寄存器端口地址分别为EEE0H,EEE1H和EEE8H,要求 通过通道0将存储器中偏移地址为1000H~10FFH的内容传送到显示器输出,试编写初 始化程序。

第三讲:

6.2 定时与计数

回 顾:可编程芯片的概念,端口的概念。

本讲重点:定时与计数的基本概念及其意义,定时/计数器芯片Intel8253的性

能概述,内、外部结构及其与CPU的连接。

讲授内容: 6.2 定时与计数

1.定时与计数

在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工 作状态,或者对外部过程进行计数。定时或计数的工作实质均体现为对脉冲信 号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数 值就恒定地对应于一定的时间,这一过程即为定时,如果计数的对象是与外部 过程相对应的脉冲信号(周期可以不相等),则此时即为计数。 2.定时与计数的实现方法 (1).硬件法

专门设计一套电路用以实现定时与计数,特点是需要花费一定硬设备,而 且当电路制成之后,定时值及计数范围不能改变。 (2).软件法

利用一段延时子程序来实现定时操作,特点,无需太多的硬设备,控制比 较方便,但在定时期间,CPU不能从事其它工作,降低了机器的利用率。 (3).软、硬件结合法

即设计一种专门的具有可编程特性的芯片,来控制定时和计数的操作,而 这些芯片,具有中断控制能力,定时、计数到时能产生中断请求信号,因而定 时期间不影响CPU的正常工作。

6.3 定时/计数器芯片Intel8253

Intel8253是8086/8088微机系统常用的定时/计数器芯片,它具有定时与计 数两大功能,同类型的定时/计数器芯片还有Intel8254等。

一、 8253的一般性能概述

1.每个8253芯片有3个独立的16位计数器通道

2.每个计数器通道都可以按照二进制或二—十进制计数

3.每个计数器的计数速率可以高达2MHz

4.每个通道有6种工作方式,可以由程序设定和改变 5.所有的输入、输出电平都与TTL兼容

§6.3.2 8253内部结构

8253的内部结构如图6-16(P160)所示,它主要包括以下几个主要部分:

图6-16 8253的内部结构

1.数据总线缓冲器

8253内部实现与CPU数据总线连接的8位双向三态缓冲器,用以传送 CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息, 包 括某一方面时刻的实时计数值。 2.读/写控制逻辑

控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来 的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。 3.控制字寄存器

在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式, 此寄存器只能写入,不能读出。 4.计数通道0#、1#、2#:

这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一 个16位的计数寄存器,用以存放计数初始值,和一个16位的减法计数器 和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化, 在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取, 读取完毕之后,输出锁存器又跟随减1计数器变化。

另外,计数器的值为0的状态,还反映在状态锁存器中,可供读取。

二、 8253的外部引脚

8253芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图 6-17所示。

8253芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,

各个引脚及其所传送信号的情况,介绍如下:

1.D7~D0:双向、三态数据线引脚,用以与系统的数据线连接,传送控制、数据及状态信息。、、、

2.RD:来自于CPU的读控制信号输入引脚,低电平有效。 3.WR:来自于CPU的写控制信号输入引脚,低电平有效。 4.CS:芯片选择信号输入引脚,低电平有效。

图6-17 8253的引脚

5.A1、A0:地址信号输入引脚,一般接CPU地址总线的A1、A0位,用以选 择8253芯片的通道及控制字寄存器。A0、A1的状态与8253端口地址的对应 关系如表6-4所示(P161)

表6-4。 A1 0 0 1 1 A0 0 1 0 1 0#通道 1#通道 2#通道 控制端口

6.VCC及GND:+5V电源及接地引脚

7.CLKi:i=0,1,2,第i个通道的计数脉冲输入引脚,8253规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。 8.GATEi:i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道 的工作方式有关。

9.OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式 由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向

CPU发出的中断请求信号。

三、 8253的控制字

8253有一个8位的控制字寄存器,其格式如下:

图6-18 8253的控制字

其中:

D0:数制选择控制。为1时,表明采用BCD码进行定时/计数;否则,

采用二进制进行定时/计数。

D3~D1:工作方式选择控制。000,0;001,1;X10,2;X11,3;100, 4;101,5;

D5、D4:读写格式。00,计数锁存命令;01,读/写高8位命令;10,读 /写低8位命令;11,先读/写低8位,再读写高8位命令。

D7、D6:通道选择控制。00 0通道;01,1通道;10,2通道;11,非 法

1.8253的初始化编程

要使用8253,必须首先进行初始化编程,初始化编程包括设置通道控制字和送通道计数初值两个方面,控制字写入8253的控制字寄存器,而初始值则写入相应通道的计数寄存器中。 初始化编程包括如下步骤:

(1).写入通道控制字,规定通道的工作方式

(2).写入计数值,若规定只写低8位,则高8位自动置0,若规定只写高8位, 则低8位自动置0。若为16位计数值则分两次写入,先写低8位,后写高8位。

D0:用于确定计数数制,0,二进制;1,BCD码

例1:设8253的端口地址为:04H~07H,要使计数器1工作在方式0,仅用8位二进制计数,计数值为128,进行初始化编程。

控制字为:01010000B=50H

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4