本章主要教学内容
可编程 DMA控制器 8237A的内部结构和引脚功能
8237A的工作方式及编程方法
可编程计数 /定时器接口芯片 8253的编程结构与使用方法
8253在 PC机上的具体应用第 8章 DMA控制器与定时计数器接口
8.1 可编程 DMA控制器 8237A
数据传送方式除了查询方式和中断方式以外还有 DMA控制方式。利用 DMA方式传送数据时,数据的传送过程完全由硬件电路控制,这种电路称为 DMA控制器( DMAC),它可以在 DMA方式下起到 CPU的作用。 DMAC的功能就是在存储器和 I/O设备之间进行高速、成批的数据传输。在 8086系统中,DMAC选用的是可编程器件 Intel 8237A,它含有 4个独立的 DMA通道,可以用来实现内存到接口、接口到内存及内存到内存之间的高速数据传送,最高数据传送速率可达 1.6MB/s,在此过程中 CPU不再干预,
这样可大大减少数据传送的中间过程,提高了数据的传送速度。
8.1.1 8237A的内部结构及引脚在 DMA控制器取得系统总线的控制权后,系统就完全在它的控制下进行工作,此时 DMA为总线主模块,这种工作方式通常称为主态方式;另外,DMA又可以和其它接口一样,接受
CPU对它的读 /写操作,这时 DMA控制器就成了总线从模块,
这种工作方式通常称为从态方式 。 8237A的编程结构和引脚信号与这两方面的情况有关 。
1,8237A的内部结构
8237A的内部结构如图 8-1所示,它主要由时序与控制逻辑,
命令控制逻辑,优先级编码电路,数据和地址缓冲器组以及内部寄存器等 5个部分组成 。
时序与控制逻辑优先级编码命令寄存器
(8 )
屏蔽寄存器
(4 )
请求寄存器
(4 )
字数暂存器
EOP
RESET
CS
CLK
AEN
ADSTB
M EM R
MEMW
IOR
IOW
READY
HRQ
HLDA
03
DREQ
03
DACK
4
4
读缓冲器基地址寄存器
(1 6 ×
4)
基字寄存器
(1 6 ×
4)
读/ 写缓冲器当前地址寄存器
(1 6 ×4 )
当前字计数器
(1 6 ×4 )
16
16
写缓冲器 读缓冲器内部数据总线方式寄存器
(4 ×6 )
状态寄存器
(8 )
暂存寄存器
(8 )
地址暂存器
A
15~
A
8
I / O 缓冲输出缓冲
A
3
-A
0
A
7
-A
4
命令控制逻辑
D
1
-D
0
I / O 缓冲
DB
7
-DB
0
图 8-1 8237A内部结构图 8-1中各主要部件的功能分析如下:
( 1) 时序与控制逻辑:当 8237A处于从态工作方式时,时序与控制逻辑电路接受系统送来的时钟,复位,片选和读 /写控制等信号,完成相应的控制操作;当 8237A处于主态工作方式时则向系统发出相应的控制信号 。
( 2) 命令控制逻辑,8237A处于从态工作方式时,命令控制逻辑接收 CPU送来的寄存器选择信号 A3~A0,选择 8237A内部相应的寄存器;主态时,对工作方式寄存器的最低两位 D1D0
进行译码,以确定 DMA的操作类型 。 寄存器选择信号 A3~A0与,
配合可组成各种操作命令 。
( 3)优先级编码电路:该电路根据 CPU对 8237A初始化时送来的命令,对同时提出 DMA请求的多个通道进行排队判优,来决定哪一个通道的优先级别为最高。对优先级的管理有固定优先级和循环优先级两种方式,无论采用哪种优先级管理,一旦某个优先级高的设备在服务时,其它通道的请求均被禁止,直到该通道的服务结束时为止。
( 4) 数据和地址缓冲器组,8237A的引脚 A7~A4,A3~A0为地址线;引脚 DB7~DB0在从态时传输数据信息,在主态时传送地址信息 。 这些数据引线和地址引线都与三态缓冲器相连,
因而可以接管或释放总线 。
( 5) 内部寄存器,8237A内部有 4个 DMA通道,每个通道都有一个 16位的基地址寄存器,基字计数器,当前地址寄存器和当前字计数器,以及一个 6位的工作方式寄存器 。 片内还各有一个可编程的命令寄存器,屏蔽寄存器,请求寄存器,
状态寄存器和暂存寄存器,以及不可编程的字数暂存器和地址暂存器等 。
2,8237A的引脚
8237A是一种具备 40个引脚的双列直插式 DIP封装的芯片,如图 8-2所示。
IO R
IOW
M E M R
NC
M E M W
READY
HLDA
ADSTB
AEN
HQR
CS
CLK
RESET
2
DACK
3
DACK
2
DREQ
1
DREQ
3
DREQ
0
DREQ
GND
A
7
A
6
A
5
A
4
A
EOP
3
A
2
A
1
A
0
A
CC
V
0
DB
1
DB
2
DB
3
DB
4
DB
0
DACK
1
DACK
5
DB
6
DB
7
DB
1 40
2 39
8237A
3 38
4 37
5 36
6 35
7 34
8 33
9 32
10 31
11 30
12 29
13 28
14 27
15 26
16 25
17 24
18 23
19 22
20 21
图 8 - 2 8 2 3 7 A 的引脚
8.1.2 8237A的工作方式
8237A在系统中可以有两种功能:一种功能是系统总线的主控者,这是它工作的主方式 。 在取代 CPU控制 DMA传送时,它应提供存储器的地址和必要的读写控制信号,数据是在 I/O设备与存储器之间通过数据总线直接传递;另一种功能是在成为主控者之前,必须由 CPU对它编程以确定通道的选择,数据传送的模式,存储器区域首地址,传送总字节数等等 。 在 DMA传送之后
,也有可能由 CPU读取 DMA控制器的状态 。 这时 8237A如同一般
I/O端口设备一样,是系统总线的从设备,这是 8237A工作的从方式 。
1,8237A传送工作方式
( 1) 单字节传送方式这种工作方式的特点是每申请一次只传送一个字节 。 数据传送后字节计数器自动减量 ( 增量或减量取决于编程 ) 。 传送完这一个字节后 DMAC放弃系统总线,将总线控制权交回
CPU。 HRQ信号变为无效,释放系统总线 。 若传送数据使字节数减为 0,总线计数结束发出信号,或终结 DMA传送,或重新初始化 。
( 2) 数据块传送方式在这种传送方式下,DMAC一旦获得总线控制权便开始连续传送数据 。 每传送一个字节,自动修改地址,并使要传送的字节数减 1,直到将所有规定的字节全部传送完,或收到外部信号,DMAC才结束传送,将总线控制权交给 CPU。
( 3) 请求传送方式在这种方式下,8237A可以进行连续的数据传送,只有出现以下三种情况之一时才停止传送:
字节数计数器减到 0,产生一个终止计数 T/C信号;
由外界送来一个有效的 信号;
外界的 DRQ信号变为无效 ( 外设来的数据已传送完 ) 。
( 4) 级联方式采用这种方式可以将多个 8237A级联起来,以扩展系统中的 DMA通道数量 。 如图 8-3所示,是 2个 8237A级联情况示意 。
DREQ
DREQ
DACK
DACK
HRQ
HDLA
HRQ
HDLA
HRQ
HDLA
微处理器第一级823 7A 第二级823 7A
图 8-3 二级 8237A的级联示意图
2,8237A的传送类型
8237A主要完成三种不同的传送:
( 1) I/O接口到存储器的传送
( 2) 存储器到 I/O接口的传送
( 3) 存储器到存储器的传送
3,8237A的优先级处理
8237A有两种优先级方案可供编程选择:
( 1) 固定优先级:规定每个通道的优先级是固定的,即通道 0的优先级最高,依次降低,通道 3的优先级最低 。
( 2)循环优先级:规定刚被服务的通道的优先级为最低,
依次循环。这样,就可以保证 4个通道都有机会被服务。
若 3个通道已被服务,则剩下的通道一定是优先级最高的。
4,8237A的传送速率一般情况下,8237A进行一次 DMA传送需要 4
个时钟周期 ( 不包括插入的等待周期 ) 。 例如,PC机的时 钟 周 期 约 为 210ns,则 一 次 DMA 传 送 需 要 210
ns× 4+210 ns=1050 ns,多加一个 210 ns是考虑到认为插入一个等待周期的缘故 。
另外,8237A为了提高传输速率,可以在压缩定时状态下工作。在压缩定时下,每一个 DMA总线周期仅用
2个时钟周期来实现,从而大大地提高了传送速率。
8.1.3 8237A的内部寄存器
1,8237A内部寄存器的种类
8237A的内部有 10种不同类型的寄存器。各类寄存器的名称、位数、寄存器个数及其主要功能见表 8-1所示。
名称 位数 数量 功能当前地址寄存器 16 4 保存 在 DMA传 送期间的地址值,可读写当前字节计数寄存器 16 4 保存当前字节数,初始值比实际值少 1,可读写基地址寄存器 16 4 保存当前地址寄存器的初始值,只能写基字节计数寄存器 16 4 保存相应通道当前字节计数器的初值工作方式控制寄存器 8 4 保存相应通道的方式控制字,由编程写入命令寄存器 8 1 保存 CPU发送的控制命令状态寄存器 8 1 保存 8237A各通道的现行状态请求寄存器 4 1 保存各通道 的 DMA请求信号屏蔽寄存器 4 1 用于选择允许或禁止各通道 的 DMA请求信号暂存寄存器 8 1 暂存传输数据,仅用于存储器到存储器的传输
2,8237A内部寄存器
( 1) 当前地址寄存器
( 2) 当前字节计数寄存器
( 3) 基地址寄存器
( 4) 基字节计数寄存器
( 5) 工作方式寄存器
( 6) 命令寄存器
( 7) 状态寄存器
( 8) 请求寄存器
( 9) 屏蔽寄存器
( 10) 暂存寄存器
( 11) 软件命令
8.1.4 8237A的编程及应用
1,8237A编程的一般步骤在进行 DMA传输之前,CPU要对 8237A进行初始化编程,
设定工作模式及参数等 。 通常,其编程内容主要包括以下几步:
( 1) 输出总清除命令,使 8237A处于复位状态,做好接收新命令的准备;
( 2) 根据所选通道,写入相应通道的基地址寄存器和当前地址寄存器的初始值;
( 3) 写入基字节计数寄存器和当前字节计数寄存器的初始值;
( 4) 写入方式控制寄存器,以确定 8237A的工作方式和传送类型;
( 5) 写入屏蔽寄存器;
( 6) 写入命令寄存器,以控制 8237A的工作;
( 7) 写入请求寄存器 。
【 例 8.1】 已知某系统采用一片 8237A来设计 DMA传输电路,
给定 8237A的基地址为 00H。 利用通道 0从磁盘将一个 1K字节的数据块传送到内存 06000H开始的区域中,每传送一个字节,地址增 1,采用数据块连续传送方式,禁止自动预置,外设的 DMA请求信号 DREQ和响应信号 DACK均为高电平有效 。
对 8237A的初始化程序如下:
DMA EQU 00H
OUT DMA+0DH,ALMOV AX,6000H
OUT DMA+00H,AL
MOV AL,AH
OUT DMA+00H,AL
MOV AX,0400HDEC AX
OUT DMA+01H,AL
MOV AL,AH
OUT DMA+01H,AL
写入方式字:数据块传送,地址增量,禁止自动预置,写传送,选择通道
MOV AL,10000100B
OUT DMA+0BH,AL
写入屏蔽字:通道 0屏蔽位清 0
MOV AL,00H
OUT DMA+0AH,AL
写入命令字,DACK和 DREQ为高电平,固定优先级,非存储器间传送
MOV AL,10000000B
OUT DMA+08H,AL
写入请求字:通道 0产生请求,用软件启动 8237A
MOV AL,04H
OUT DMA+09H,AL
2,8237A的应用为了掌握 8237A的编程方法,我们结合 IBM PC/XT计算机系统中 8237A的应用来进行说明 。
【 例 8.2】 在 PC/XT机中,8237A的通道 0用来对动态 RAM进行刷新,通道 2和通道 3分别用来进行软盘驱动器和内存之间的数据传送以及硬盘和内存之间的数据传送,通道 1用来提供其它传送功能,比如网络通讯功能 。 系统采用固定优先级,即动态 RAM刷新的优先权最高 。 4个 DMA请求信号中,只有
DREQ0是和系统板相连的,DREQ1~DREQ3几个请求信号都接到总线扩展槽的引脚上,由对应的软盘接口板和网络接口板提供 。 同样,DMA应答信号 DACK0 送往系统板,而
DACK1~DACK3信号则送往扩展槽 。
该例中的 8237A对应端口地址为 0000H~000FH,在下面的编程中我们采用标号 DMA来代表首地址 0000H。
对 8237A的初始化及测试程序如下 。
初始化程序段:
MOV AL,04 ; 4个 DMA请求信号
MOV DX,DMA+8 ; DMA+8为控制寄存器的端口号
OUT DX,AL ;输出控制命令,关闭 8237A
MOV AL,00
MOV DX,DMA+0DH ; DMA+0DH为主清除命令端口号
OUT DX,AL ;发送主清除命令
MOV DX,DMA ; DMA为通道 0的地址寄存器对应端口号
MOV CX,0004
MOV AL,0FFH
OUT DX,AL ;写入地址低位
OUT DX,AL ;写入地址高位
INC DX
INC DX ;指向下一通道
LOOP WRITE ;使 4个通道地址寄存器均为 FFFFH
MOV DX,DMA+0BH ; DMA+0BH为模式寄存器的端口
MOV AL,58H
OUT DX,AL
MOV AL,42H
OUT DX,AL ;设置通道 2模式
MOV AL,43H
OUT DX,AL ;设置通道 3模式
MOV DX,DMA+8; DMA+8为控制寄存器的端口号
MOV AL,0
OUT DX,AL
MOV DX,DMA+0AH ; DMA+0AH为屏蔽寄存器的端口号
OUT DX,AL ;通道 0去除屏蔽
MOV AL,01
OUT DX,AL ;通道 2去除屏蔽
MOV AL,01
OUT DX,AL ;通道 1去除屏蔽
MOV AL,03
OUT DX,AL ;通道 3去除屏蔽对通道 1~3的地址寄存器的值进行测试:
MOV DX,DMA+2 ; DMA+2为通道 1地址寄存器端口
MOV CX,0003
READ:IN AL,DX ;读字节低位
MOV AH,AL
IN AL,DX ;读字节高位
CMP AX,0FFFFH ;比较读取的值和写入的值是否相等
JNZ STOP ;不等,则转 STOPH
INC DX
INC DX ;指向下一个通道
LOOP READ ;测试下一个通道
…… ;后续测试
STOP:HLT ;出错则停机等待
8.2 可编程计数 /定时器接口芯片 8253
在微机应用系统中经常会用到定时控制或计数控制,如定时中断,定时扫描,定时检测,各种计数等等 。 一般来讲,实现定时,计数控制大致可采用以下三种方法:
( 1) 设计数字逻辑电路来实现定时或计数的要求
( 2) 用软件来实现定时和计数的要求
( 3) 采用可编程定时器 /计数器在微机系统中,大都采用了与 8253和 8254兼容的定时计数器模块,8253芯片最高工作频率为 2.6MHz,而 8254芯片为
10MHz。 两者除工作频率不同外,几乎没有区别 。 本节主要介绍 Intel8253可编程定时器 /计数器芯片的基本工作原理及其应用 。
8.2.1 8253的内部结构和引脚
1,8253的内部结构
8253内部可分为数据总线缓冲器、读 /写逻辑电路、控制寄存器及三个独立的功能相同的计数器 0、计数器 1和计数器 2。其内部结构如图 8-4所示。
计数器0
计数器1
计数器2
数据总线缓冲器读/ 写逻辑电路控制寄存器内部总线
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
D A T A 7 ~D A T A 0
RD
WR
A1
A0
CS
图 8-4 8253的内部结构
2,8253的引脚功能
8253采用双列直插
DIP封装,有 24个引脚,其引脚排列如图
8-5所示。
D 7
D 6
D 5
D 4
D 3
D 2
D 1
D 0
CLK 0
OUT 0
GATE 0
GND
VCC
WR
RD
CS
A 1
A 0
CLK 2
OUT 2
GATE 2
CLK 1
GATE 1
OUT 1
8253
图 8 - 5 8253 引脚
8.2.2 8253的工作方式
8253芯片的每个计数通道都有 6种工作方式可供选择。
区分这 6种工作方式的主要标志有 3点:一是 OUT端的输出波形不同;二是计数过程的启动方式不同;三是计数过程中门控信号 GATE对计数操作产生的影响不同。
6种工作方式如下:
1,方式 0:计数结束中断
2,方式 1:可重复触发的单稳态触发器
3,方式 2:分频器
4,方式 3:方波发生器
5,方式 4:软件触发的选通信号发生器
6,方式 5:硬件触发的选通信号发生器
8253的 6种工作方式的特点概括如下:
( 1) CPU将控制字写入 8253后,控制逻辑电路复位,输出端 OUT进入初始状态(高电平或低电平)。
( 2)计数初值写入初值寄存器后,需经一个时钟的上升沿和一个下降沿才将初值写入计数执行单元并开始计数。
( 3)时钟脉冲的下降沿到来,计数器作减 1计数。
( 4)在不同的工作方式下 OUT端会有不同的输出波形。
( 5) GATE信号在不同的工作方式下也会有不同的作用。
8.2.3 8253的初始化及编程
1,8253的初始化对 8253进行编程初始化后,8253即开始自动按设置好的工作方式工作。
【 例 8.5】 设在 8086系统中有一片 8253,其端口地址分配是:通道 0为 0E0H,通道 1为 0E1H,通道 2为 0E2H,控制端口为 0E3H。要求对其通道 0进行初始化,使其工作于方式 0、
二进制计数、计数初始值为 6688H。
其初始化程序段为:
MOV AL,30H ;控制字送 AL
MOV DX,0E6H ;控制端口地址送 DX
OUT DX,AL ;向控制端口写入控制字
MOV AL,88H ;低 8位计数值 88H
MOV DX,0E0H ;通道 0端口地址送 DX
OUT DX,AL ;向通道 0写入计数初值的低 8位
MOV AL,66H ;高 8位计数值 66H
OUT DX,AL ;向通道 0写入计数初值的高 8位
2,8253的编程对 8253芯片的初始化编程包括写入控制字和写入计数值两个步骤。
第一步,写入控制字。任一通道的控制字都要从 8253的控制口地址写入,控制哪个通道由控制字的 D7D6位来决定。
第二步,写入计数初始值。计数初始值经由各通道的端口地址写入。
假设已知 8253相应通道的 CLK端接入的时钟频率为 fCLK,
周期为 TCLK=1/fCLK,要求产生的周期性信号频率为 F(周期为 T)或定时时间为 T( F=1/T),则所需计数初值 N为:
N=T/tCLK=fCLK/F=T× fCLK
8.3 8253在 PC机上的应用可编程定时器 /计数器 8253可与各种微型计算机系统相连并构成完整的定时、计数或脉冲发生器。使用 8253时,
要先根据实际应用要求,设计一个包含 8253的硬件逻辑电路或接口,再对 8253进行初始化编程,只有初始化后 8253
才可以按要求正常工作。
8.3.1 定时中断控制在微型计算机系统的应用中,经常会遇到隔一定的时间重复某一个动作的操作,这就是定时控制问题。
【 例 8.7】 设某微机应用系统中,系统提供一个频率为
10KHz的时钟信号,要求每隔 10ms完成一次扫描键盘的工作。为了提高 CPU的工作效率,采用定时中断的方式进行键盘的扫描。
解题分析:在该系统中,采用 8253定时器的通道 0来实现规定的要求。将 8253芯片的 CLK0接到系统的 10kHz时钟上,OUT0输出接到 CPU的中断请求线上,8253的端口地址为 10H~ 13H。
( 1)工作方式的选择由于该系统每隔 10ms完成一次动作,则扫描键盘的动作频率为 100Hz,可选用方式 2来实现。
当 8253定时器工作在方式 2时,在写入控制字与计数初值后,定时器就启动工作,每到 10ms时间,即计数器减到 1
时,输出端 0UT0输出一个 CLK周期的低电平,向 CPU申请中断,完成键盘扫描,同时按原设定值重新开始计数,从而实现计数值的自动重装。
( 2)确定计数初值由给定可知,fCLK0=10KHz,则 TCLK0=0.1ms,所以计数初值为:
N= TOUT0/ TCLK0=10ms/0.1ms=100,即 64H。
( 3)初始化编程根据以上要求,可确定 8253通道 0的方式控制字为
00010100B,即 14H。
初始化程序段如下:
MOV AL,14H
OUT l3H,AL
MOV AL,64H
OUT 10H,AL
8.3.2 扬声器控制
IBM PC/XT机中使用了 1个 8253,系统中 8253的端口地址为 40H~ 43H,3个通道的时钟输入频率为 1.19318MHz
(系统时钟 PCLK的二分频)。其中计数器 2用于扬声器的音调控制。
计数通道 2的输出加到扬声器上控制其发声,作为机器的报警信号或伴音信号。门控信号 GATE2接并行接口 8255
的 PB0位,用它控制通道 2的计数过程。输出 OUT2经过一个与门,这个与门受 8255的 PB1位控制。所以,扬声器可由
PB0或 PB1分别控制发声。由于 8255还要控制其他设备,在控制扬声器发声的程序中要注意保护 PB端口原来的状态,
以免影响其他设备的工作。
【 例 8.8】 ROM BI0S中有一个声响子程序 BEEP,它将计数器 2编程为方式 3,作为方波发生器输出约 1KHz的方波,经滤波驱动后推动扬声器发声。
该程序设计如下:
BEEP PROC
MOV AL,10110110B
OUT 43H,AL
MOV AX,0533H
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,03H
OUT 61H,AL
SUB CX,CX
G7,LOOP G7
DEC B1
JNZ G7
MOV AL,AH
OUT 61H,AL
RET
BEEP ENDP
8.3.3 延时控制通常的软件延时方法是编写一段循环控制程序,让
CPU执行,循环次数一到,延时就结束。这种简单的办法带来的问题是,相同的软件延时程序,在不同主频的微机中运行时,因时钟周期不同,导致延时的差异比较大。对该问题所采取的改进措施是:利用定时器每秒中断 18.2次速率不变的特点,通过软中断 INT 1AH的 0号功能,读取定时器当前计数值,并把要求延时的时间(期望值)折合成计时单位与当前计数值相加,作为定时器的目标值。然后,
再利用 INT 1AH的 0号功能不断读取定时器的计数值,并与目标值比较,当两值相等时,表明延时的,时间到,。这种延时与主机的频率无关,故延时时间稳定。
【 例 8.9】 利用系统的硬件定时器来实现延时 5秒钟的功能 。
解题分析:由于该题是利用微机系统的硬件定时器及中断资源,故硬件设计不需重新做,只要完成软件编程工作即可 。
软件编程要利用 INT 1AH功能调用。首先,将所要求的延时时间折算成计时单位(如 54.945ms)的个数。 5秒钟所包含的定时单位个数 =91( 5000ms/54.945ms)。其次,
把它加到当前的计数值中去,构成一个目标值。由于定时器 8253的 OUT0每隔 54.945ms申请 1次中断,每 1次中断在双字变量中加 1,随着时间的推移不断使双字变量中的计数值增大,与此同时,利用 INT 1AH的 0号功能不断地读取当前的计数值,当所读取的计数值达到目标值时,则延时已到,程序往下继续执行。
实现硬件延时的程序段设计如下:
…… ;暂停止程序中的其他操作,等待延时
MOV AH,0H ;读日时钟
INT 1AH
ADD DX,91 ;加 5秒延时 ( 折合成 91个计时单位 )
MOV BX,DX ;目标值 → BX
REP:MOV AH,0H ;再读日时钟
INT 1AH
CMP DX,BX ;与目标值比较
JNZ REP ;不相等,继续延时
…… ;相等,延时结束,继续执行程序中的其他操作本章小结本章介绍了可编程接口芯片 8237A和 8253的内部结构,引脚功能,编程结构和主要应用 。
8237A DMA控制器有两种不同的工作状态,即总线主模块和总线从模块 。 在总线主模块下 DMA控制器一方面可以控制系统总线,而在总线从模块下可以和其他接口一样,接受 CPU对它的读 /写操作 。
8237A DMA控制器含有 4个独立的 DMA通道,可以用来实现内存到接口,接口到内存及内存到内存之间的高速数据传送 。
8253为定时器 /计数器接口芯片,具备定时和计数两个基本功能,内部包含 3个 16位计数器,
每个计数器可按二进制或十进制计数,有 6种工作方式,可通过编程选择 。 在不同的工作方式下,计数过程的启动方式,OUT端的输出波形都不一样 。 自动重复功能和 GATE的控制作用以及写入新的计数初值对计数器的工作过程产生的影响是不一样的 。
本章小结第 8章内容到此结束谢谢各位 !
可编程 DMA控制器 8237A的内部结构和引脚功能
8237A的工作方式及编程方法
可编程计数 /定时器接口芯片 8253的编程结构与使用方法
8253在 PC机上的具体应用第 8章 DMA控制器与定时计数器接口
8.1 可编程 DMA控制器 8237A
数据传送方式除了查询方式和中断方式以外还有 DMA控制方式。利用 DMA方式传送数据时,数据的传送过程完全由硬件电路控制,这种电路称为 DMA控制器( DMAC),它可以在 DMA方式下起到 CPU的作用。 DMAC的功能就是在存储器和 I/O设备之间进行高速、成批的数据传输。在 8086系统中,DMAC选用的是可编程器件 Intel 8237A,它含有 4个独立的 DMA通道,可以用来实现内存到接口、接口到内存及内存到内存之间的高速数据传送,最高数据传送速率可达 1.6MB/s,在此过程中 CPU不再干预,
这样可大大减少数据传送的中间过程,提高了数据的传送速度。
8.1.1 8237A的内部结构及引脚在 DMA控制器取得系统总线的控制权后,系统就完全在它的控制下进行工作,此时 DMA为总线主模块,这种工作方式通常称为主态方式;另外,DMA又可以和其它接口一样,接受
CPU对它的读 /写操作,这时 DMA控制器就成了总线从模块,
这种工作方式通常称为从态方式 。 8237A的编程结构和引脚信号与这两方面的情况有关 。
1,8237A的内部结构
8237A的内部结构如图 8-1所示,它主要由时序与控制逻辑,
命令控制逻辑,优先级编码电路,数据和地址缓冲器组以及内部寄存器等 5个部分组成 。
时序与控制逻辑优先级编码命令寄存器
(8 )
屏蔽寄存器
(4 )
请求寄存器
(4 )
字数暂存器
EOP
RESET
CS
CLK
AEN
ADSTB
M EM R
MEMW
IOR
IOW
READY
HRQ
HLDA
03
DREQ
03
DACK
4
4
读缓冲器基地址寄存器
(1 6 ×
4)
基字寄存器
(1 6 ×
4)
读/ 写缓冲器当前地址寄存器
(1 6 ×4 )
当前字计数器
(1 6 ×4 )
16
16
写缓冲器 读缓冲器内部数据总线方式寄存器
(4 ×6 )
状态寄存器
(8 )
暂存寄存器
(8 )
地址暂存器
A
15~
A
8
I / O 缓冲输出缓冲
A
3
-A
0
A
7
-A
4
命令控制逻辑
D
1
-D
0
I / O 缓冲
DB
7
-DB
0
图 8-1 8237A内部结构图 8-1中各主要部件的功能分析如下:
( 1) 时序与控制逻辑:当 8237A处于从态工作方式时,时序与控制逻辑电路接受系统送来的时钟,复位,片选和读 /写控制等信号,完成相应的控制操作;当 8237A处于主态工作方式时则向系统发出相应的控制信号 。
( 2) 命令控制逻辑,8237A处于从态工作方式时,命令控制逻辑接收 CPU送来的寄存器选择信号 A3~A0,选择 8237A内部相应的寄存器;主态时,对工作方式寄存器的最低两位 D1D0
进行译码,以确定 DMA的操作类型 。 寄存器选择信号 A3~A0与,
配合可组成各种操作命令 。
( 3)优先级编码电路:该电路根据 CPU对 8237A初始化时送来的命令,对同时提出 DMA请求的多个通道进行排队判优,来决定哪一个通道的优先级别为最高。对优先级的管理有固定优先级和循环优先级两种方式,无论采用哪种优先级管理,一旦某个优先级高的设备在服务时,其它通道的请求均被禁止,直到该通道的服务结束时为止。
( 4) 数据和地址缓冲器组,8237A的引脚 A7~A4,A3~A0为地址线;引脚 DB7~DB0在从态时传输数据信息,在主态时传送地址信息 。 这些数据引线和地址引线都与三态缓冲器相连,
因而可以接管或释放总线 。
( 5) 内部寄存器,8237A内部有 4个 DMA通道,每个通道都有一个 16位的基地址寄存器,基字计数器,当前地址寄存器和当前字计数器,以及一个 6位的工作方式寄存器 。 片内还各有一个可编程的命令寄存器,屏蔽寄存器,请求寄存器,
状态寄存器和暂存寄存器,以及不可编程的字数暂存器和地址暂存器等 。
2,8237A的引脚
8237A是一种具备 40个引脚的双列直插式 DIP封装的芯片,如图 8-2所示。
IO R
IOW
M E M R
NC
M E M W
READY
HLDA
ADSTB
AEN
HQR
CS
CLK
RESET
2
DACK
3
DACK
2
DREQ
1
DREQ
3
DREQ
0
DREQ
GND
A
7
A
6
A
5
A
4
A
EOP
3
A
2
A
1
A
0
A
CC
V
0
DB
1
DB
2
DB
3
DB
4
DB
0
DACK
1
DACK
5
DB
6
DB
7
DB
1 40
2 39
8237A
3 38
4 37
5 36
6 35
7 34
8 33
9 32
10 31
11 30
12 29
13 28
14 27
15 26
16 25
17 24
18 23
19 22
20 21
图 8 - 2 8 2 3 7 A 的引脚
8.1.2 8237A的工作方式
8237A在系统中可以有两种功能:一种功能是系统总线的主控者,这是它工作的主方式 。 在取代 CPU控制 DMA传送时,它应提供存储器的地址和必要的读写控制信号,数据是在 I/O设备与存储器之间通过数据总线直接传递;另一种功能是在成为主控者之前,必须由 CPU对它编程以确定通道的选择,数据传送的模式,存储器区域首地址,传送总字节数等等 。 在 DMA传送之后
,也有可能由 CPU读取 DMA控制器的状态 。 这时 8237A如同一般
I/O端口设备一样,是系统总线的从设备,这是 8237A工作的从方式 。
1,8237A传送工作方式
( 1) 单字节传送方式这种工作方式的特点是每申请一次只传送一个字节 。 数据传送后字节计数器自动减量 ( 增量或减量取决于编程 ) 。 传送完这一个字节后 DMAC放弃系统总线,将总线控制权交回
CPU。 HRQ信号变为无效,释放系统总线 。 若传送数据使字节数减为 0,总线计数结束发出信号,或终结 DMA传送,或重新初始化 。
( 2) 数据块传送方式在这种传送方式下,DMAC一旦获得总线控制权便开始连续传送数据 。 每传送一个字节,自动修改地址,并使要传送的字节数减 1,直到将所有规定的字节全部传送完,或收到外部信号,DMAC才结束传送,将总线控制权交给 CPU。
( 3) 请求传送方式在这种方式下,8237A可以进行连续的数据传送,只有出现以下三种情况之一时才停止传送:
字节数计数器减到 0,产生一个终止计数 T/C信号;
由外界送来一个有效的 信号;
外界的 DRQ信号变为无效 ( 外设来的数据已传送完 ) 。
( 4) 级联方式采用这种方式可以将多个 8237A级联起来,以扩展系统中的 DMA通道数量 。 如图 8-3所示,是 2个 8237A级联情况示意 。
DREQ
DREQ
DACK
DACK
HRQ
HDLA
HRQ
HDLA
HRQ
HDLA
微处理器第一级823 7A 第二级823 7A
图 8-3 二级 8237A的级联示意图
2,8237A的传送类型
8237A主要完成三种不同的传送:
( 1) I/O接口到存储器的传送
( 2) 存储器到 I/O接口的传送
( 3) 存储器到存储器的传送
3,8237A的优先级处理
8237A有两种优先级方案可供编程选择:
( 1) 固定优先级:规定每个通道的优先级是固定的,即通道 0的优先级最高,依次降低,通道 3的优先级最低 。
( 2)循环优先级:规定刚被服务的通道的优先级为最低,
依次循环。这样,就可以保证 4个通道都有机会被服务。
若 3个通道已被服务,则剩下的通道一定是优先级最高的。
4,8237A的传送速率一般情况下,8237A进行一次 DMA传送需要 4
个时钟周期 ( 不包括插入的等待周期 ) 。 例如,PC机的时 钟 周 期 约 为 210ns,则 一 次 DMA 传 送 需 要 210
ns× 4+210 ns=1050 ns,多加一个 210 ns是考虑到认为插入一个等待周期的缘故 。
另外,8237A为了提高传输速率,可以在压缩定时状态下工作。在压缩定时下,每一个 DMA总线周期仅用
2个时钟周期来实现,从而大大地提高了传送速率。
8.1.3 8237A的内部寄存器
1,8237A内部寄存器的种类
8237A的内部有 10种不同类型的寄存器。各类寄存器的名称、位数、寄存器个数及其主要功能见表 8-1所示。
名称 位数 数量 功能当前地址寄存器 16 4 保存 在 DMA传 送期间的地址值,可读写当前字节计数寄存器 16 4 保存当前字节数,初始值比实际值少 1,可读写基地址寄存器 16 4 保存当前地址寄存器的初始值,只能写基字节计数寄存器 16 4 保存相应通道当前字节计数器的初值工作方式控制寄存器 8 4 保存相应通道的方式控制字,由编程写入命令寄存器 8 1 保存 CPU发送的控制命令状态寄存器 8 1 保存 8237A各通道的现行状态请求寄存器 4 1 保存各通道 的 DMA请求信号屏蔽寄存器 4 1 用于选择允许或禁止各通道 的 DMA请求信号暂存寄存器 8 1 暂存传输数据,仅用于存储器到存储器的传输
2,8237A内部寄存器
( 1) 当前地址寄存器
( 2) 当前字节计数寄存器
( 3) 基地址寄存器
( 4) 基字节计数寄存器
( 5) 工作方式寄存器
( 6) 命令寄存器
( 7) 状态寄存器
( 8) 请求寄存器
( 9) 屏蔽寄存器
( 10) 暂存寄存器
( 11) 软件命令
8.1.4 8237A的编程及应用
1,8237A编程的一般步骤在进行 DMA传输之前,CPU要对 8237A进行初始化编程,
设定工作模式及参数等 。 通常,其编程内容主要包括以下几步:
( 1) 输出总清除命令,使 8237A处于复位状态,做好接收新命令的准备;
( 2) 根据所选通道,写入相应通道的基地址寄存器和当前地址寄存器的初始值;
( 3) 写入基字节计数寄存器和当前字节计数寄存器的初始值;
( 4) 写入方式控制寄存器,以确定 8237A的工作方式和传送类型;
( 5) 写入屏蔽寄存器;
( 6) 写入命令寄存器,以控制 8237A的工作;
( 7) 写入请求寄存器 。
【 例 8.1】 已知某系统采用一片 8237A来设计 DMA传输电路,
给定 8237A的基地址为 00H。 利用通道 0从磁盘将一个 1K字节的数据块传送到内存 06000H开始的区域中,每传送一个字节,地址增 1,采用数据块连续传送方式,禁止自动预置,外设的 DMA请求信号 DREQ和响应信号 DACK均为高电平有效 。
对 8237A的初始化程序如下:
DMA EQU 00H
OUT DMA+0DH,ALMOV AX,6000H
OUT DMA+00H,AL
MOV AL,AH
OUT DMA+00H,AL
MOV AX,0400HDEC AX
OUT DMA+01H,AL
MOV AL,AH
OUT DMA+01H,AL
写入方式字:数据块传送,地址增量,禁止自动预置,写传送,选择通道
MOV AL,10000100B
OUT DMA+0BH,AL
写入屏蔽字:通道 0屏蔽位清 0
MOV AL,00H
OUT DMA+0AH,AL
写入命令字,DACK和 DREQ为高电平,固定优先级,非存储器间传送
MOV AL,10000000B
OUT DMA+08H,AL
写入请求字:通道 0产生请求,用软件启动 8237A
MOV AL,04H
OUT DMA+09H,AL
2,8237A的应用为了掌握 8237A的编程方法,我们结合 IBM PC/XT计算机系统中 8237A的应用来进行说明 。
【 例 8.2】 在 PC/XT机中,8237A的通道 0用来对动态 RAM进行刷新,通道 2和通道 3分别用来进行软盘驱动器和内存之间的数据传送以及硬盘和内存之间的数据传送,通道 1用来提供其它传送功能,比如网络通讯功能 。 系统采用固定优先级,即动态 RAM刷新的优先权最高 。 4个 DMA请求信号中,只有
DREQ0是和系统板相连的,DREQ1~DREQ3几个请求信号都接到总线扩展槽的引脚上,由对应的软盘接口板和网络接口板提供 。 同样,DMA应答信号 DACK0 送往系统板,而
DACK1~DACK3信号则送往扩展槽 。
该例中的 8237A对应端口地址为 0000H~000FH,在下面的编程中我们采用标号 DMA来代表首地址 0000H。
对 8237A的初始化及测试程序如下 。
初始化程序段:
MOV AL,04 ; 4个 DMA请求信号
MOV DX,DMA+8 ; DMA+8为控制寄存器的端口号
OUT DX,AL ;输出控制命令,关闭 8237A
MOV AL,00
MOV DX,DMA+0DH ; DMA+0DH为主清除命令端口号
OUT DX,AL ;发送主清除命令
MOV DX,DMA ; DMA为通道 0的地址寄存器对应端口号
MOV CX,0004
MOV AL,0FFH
OUT DX,AL ;写入地址低位
OUT DX,AL ;写入地址高位
INC DX
INC DX ;指向下一通道
LOOP WRITE ;使 4个通道地址寄存器均为 FFFFH
MOV DX,DMA+0BH ; DMA+0BH为模式寄存器的端口
MOV AL,58H
OUT DX,AL
MOV AL,42H
OUT DX,AL ;设置通道 2模式
MOV AL,43H
OUT DX,AL ;设置通道 3模式
MOV DX,DMA+8; DMA+8为控制寄存器的端口号
MOV AL,0
OUT DX,AL
MOV DX,DMA+0AH ; DMA+0AH为屏蔽寄存器的端口号
OUT DX,AL ;通道 0去除屏蔽
MOV AL,01
OUT DX,AL ;通道 2去除屏蔽
MOV AL,01
OUT DX,AL ;通道 1去除屏蔽
MOV AL,03
OUT DX,AL ;通道 3去除屏蔽对通道 1~3的地址寄存器的值进行测试:
MOV DX,DMA+2 ; DMA+2为通道 1地址寄存器端口
MOV CX,0003
READ:IN AL,DX ;读字节低位
MOV AH,AL
IN AL,DX ;读字节高位
CMP AX,0FFFFH ;比较读取的值和写入的值是否相等
JNZ STOP ;不等,则转 STOPH
INC DX
INC DX ;指向下一个通道
LOOP READ ;测试下一个通道
…… ;后续测试
STOP:HLT ;出错则停机等待
8.2 可编程计数 /定时器接口芯片 8253
在微机应用系统中经常会用到定时控制或计数控制,如定时中断,定时扫描,定时检测,各种计数等等 。 一般来讲,实现定时,计数控制大致可采用以下三种方法:
( 1) 设计数字逻辑电路来实现定时或计数的要求
( 2) 用软件来实现定时和计数的要求
( 3) 采用可编程定时器 /计数器在微机系统中,大都采用了与 8253和 8254兼容的定时计数器模块,8253芯片最高工作频率为 2.6MHz,而 8254芯片为
10MHz。 两者除工作频率不同外,几乎没有区别 。 本节主要介绍 Intel8253可编程定时器 /计数器芯片的基本工作原理及其应用 。
8.2.1 8253的内部结构和引脚
1,8253的内部结构
8253内部可分为数据总线缓冲器、读 /写逻辑电路、控制寄存器及三个独立的功能相同的计数器 0、计数器 1和计数器 2。其内部结构如图 8-4所示。
计数器0
计数器1
计数器2
数据总线缓冲器读/ 写逻辑电路控制寄存器内部总线
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
D A T A 7 ~D A T A 0
RD
WR
A1
A0
CS
图 8-4 8253的内部结构
2,8253的引脚功能
8253采用双列直插
DIP封装,有 24个引脚,其引脚排列如图
8-5所示。
D 7
D 6
D 5
D 4
D 3
D 2
D 1
D 0
CLK 0
OUT 0
GATE 0
GND
VCC
WR
RD
CS
A 1
A 0
CLK 2
OUT 2
GATE 2
CLK 1
GATE 1
OUT 1
8253
图 8 - 5 8253 引脚
8.2.2 8253的工作方式
8253芯片的每个计数通道都有 6种工作方式可供选择。
区分这 6种工作方式的主要标志有 3点:一是 OUT端的输出波形不同;二是计数过程的启动方式不同;三是计数过程中门控信号 GATE对计数操作产生的影响不同。
6种工作方式如下:
1,方式 0:计数结束中断
2,方式 1:可重复触发的单稳态触发器
3,方式 2:分频器
4,方式 3:方波发生器
5,方式 4:软件触发的选通信号发生器
6,方式 5:硬件触发的选通信号发生器
8253的 6种工作方式的特点概括如下:
( 1) CPU将控制字写入 8253后,控制逻辑电路复位,输出端 OUT进入初始状态(高电平或低电平)。
( 2)计数初值写入初值寄存器后,需经一个时钟的上升沿和一个下降沿才将初值写入计数执行单元并开始计数。
( 3)时钟脉冲的下降沿到来,计数器作减 1计数。
( 4)在不同的工作方式下 OUT端会有不同的输出波形。
( 5) GATE信号在不同的工作方式下也会有不同的作用。
8.2.3 8253的初始化及编程
1,8253的初始化对 8253进行编程初始化后,8253即开始自动按设置好的工作方式工作。
【 例 8.5】 设在 8086系统中有一片 8253,其端口地址分配是:通道 0为 0E0H,通道 1为 0E1H,通道 2为 0E2H,控制端口为 0E3H。要求对其通道 0进行初始化,使其工作于方式 0、
二进制计数、计数初始值为 6688H。
其初始化程序段为:
MOV AL,30H ;控制字送 AL
MOV DX,0E6H ;控制端口地址送 DX
OUT DX,AL ;向控制端口写入控制字
MOV AL,88H ;低 8位计数值 88H
MOV DX,0E0H ;通道 0端口地址送 DX
OUT DX,AL ;向通道 0写入计数初值的低 8位
MOV AL,66H ;高 8位计数值 66H
OUT DX,AL ;向通道 0写入计数初值的高 8位
2,8253的编程对 8253芯片的初始化编程包括写入控制字和写入计数值两个步骤。
第一步,写入控制字。任一通道的控制字都要从 8253的控制口地址写入,控制哪个通道由控制字的 D7D6位来决定。
第二步,写入计数初始值。计数初始值经由各通道的端口地址写入。
假设已知 8253相应通道的 CLK端接入的时钟频率为 fCLK,
周期为 TCLK=1/fCLK,要求产生的周期性信号频率为 F(周期为 T)或定时时间为 T( F=1/T),则所需计数初值 N为:
N=T/tCLK=fCLK/F=T× fCLK
8.3 8253在 PC机上的应用可编程定时器 /计数器 8253可与各种微型计算机系统相连并构成完整的定时、计数或脉冲发生器。使用 8253时,
要先根据实际应用要求,设计一个包含 8253的硬件逻辑电路或接口,再对 8253进行初始化编程,只有初始化后 8253
才可以按要求正常工作。
8.3.1 定时中断控制在微型计算机系统的应用中,经常会遇到隔一定的时间重复某一个动作的操作,这就是定时控制问题。
【 例 8.7】 设某微机应用系统中,系统提供一个频率为
10KHz的时钟信号,要求每隔 10ms完成一次扫描键盘的工作。为了提高 CPU的工作效率,采用定时中断的方式进行键盘的扫描。
解题分析:在该系统中,采用 8253定时器的通道 0来实现规定的要求。将 8253芯片的 CLK0接到系统的 10kHz时钟上,OUT0输出接到 CPU的中断请求线上,8253的端口地址为 10H~ 13H。
( 1)工作方式的选择由于该系统每隔 10ms完成一次动作,则扫描键盘的动作频率为 100Hz,可选用方式 2来实现。
当 8253定时器工作在方式 2时,在写入控制字与计数初值后,定时器就启动工作,每到 10ms时间,即计数器减到 1
时,输出端 0UT0输出一个 CLK周期的低电平,向 CPU申请中断,完成键盘扫描,同时按原设定值重新开始计数,从而实现计数值的自动重装。
( 2)确定计数初值由给定可知,fCLK0=10KHz,则 TCLK0=0.1ms,所以计数初值为:
N= TOUT0/ TCLK0=10ms/0.1ms=100,即 64H。
( 3)初始化编程根据以上要求,可确定 8253通道 0的方式控制字为
00010100B,即 14H。
初始化程序段如下:
MOV AL,14H
OUT l3H,AL
MOV AL,64H
OUT 10H,AL
8.3.2 扬声器控制
IBM PC/XT机中使用了 1个 8253,系统中 8253的端口地址为 40H~ 43H,3个通道的时钟输入频率为 1.19318MHz
(系统时钟 PCLK的二分频)。其中计数器 2用于扬声器的音调控制。
计数通道 2的输出加到扬声器上控制其发声,作为机器的报警信号或伴音信号。门控信号 GATE2接并行接口 8255
的 PB0位,用它控制通道 2的计数过程。输出 OUT2经过一个与门,这个与门受 8255的 PB1位控制。所以,扬声器可由
PB0或 PB1分别控制发声。由于 8255还要控制其他设备,在控制扬声器发声的程序中要注意保护 PB端口原来的状态,
以免影响其他设备的工作。
【 例 8.8】 ROM BI0S中有一个声响子程序 BEEP,它将计数器 2编程为方式 3,作为方波发生器输出约 1KHz的方波,经滤波驱动后推动扬声器发声。
该程序设计如下:
BEEP PROC
MOV AL,10110110B
OUT 43H,AL
MOV AX,0533H
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,03H
OUT 61H,AL
SUB CX,CX
G7,LOOP G7
DEC B1
JNZ G7
MOV AL,AH
OUT 61H,AL
RET
BEEP ENDP
8.3.3 延时控制通常的软件延时方法是编写一段循环控制程序,让
CPU执行,循环次数一到,延时就结束。这种简单的办法带来的问题是,相同的软件延时程序,在不同主频的微机中运行时,因时钟周期不同,导致延时的差异比较大。对该问题所采取的改进措施是:利用定时器每秒中断 18.2次速率不变的特点,通过软中断 INT 1AH的 0号功能,读取定时器当前计数值,并把要求延时的时间(期望值)折合成计时单位与当前计数值相加,作为定时器的目标值。然后,
再利用 INT 1AH的 0号功能不断读取定时器的计数值,并与目标值比较,当两值相等时,表明延时的,时间到,。这种延时与主机的频率无关,故延时时间稳定。
【 例 8.9】 利用系统的硬件定时器来实现延时 5秒钟的功能 。
解题分析:由于该题是利用微机系统的硬件定时器及中断资源,故硬件设计不需重新做,只要完成软件编程工作即可 。
软件编程要利用 INT 1AH功能调用。首先,将所要求的延时时间折算成计时单位(如 54.945ms)的个数。 5秒钟所包含的定时单位个数 =91( 5000ms/54.945ms)。其次,
把它加到当前的计数值中去,构成一个目标值。由于定时器 8253的 OUT0每隔 54.945ms申请 1次中断,每 1次中断在双字变量中加 1,随着时间的推移不断使双字变量中的计数值增大,与此同时,利用 INT 1AH的 0号功能不断地读取当前的计数值,当所读取的计数值达到目标值时,则延时已到,程序往下继续执行。
实现硬件延时的程序段设计如下:
…… ;暂停止程序中的其他操作,等待延时
MOV AH,0H ;读日时钟
INT 1AH
ADD DX,91 ;加 5秒延时 ( 折合成 91个计时单位 )
MOV BX,DX ;目标值 → BX
REP:MOV AH,0H ;再读日时钟
INT 1AH
CMP DX,BX ;与目标值比较
JNZ REP ;不相等,继续延时
…… ;相等,延时结束,继续执行程序中的其他操作本章小结本章介绍了可编程接口芯片 8237A和 8253的内部结构,引脚功能,编程结构和主要应用 。
8237A DMA控制器有两种不同的工作状态,即总线主模块和总线从模块 。 在总线主模块下 DMA控制器一方面可以控制系统总线,而在总线从模块下可以和其他接口一样,接受 CPU对它的读 /写操作 。
8237A DMA控制器含有 4个独立的 DMA通道,可以用来实现内存到接口,接口到内存及内存到内存之间的高速数据传送 。
8253为定时器 /计数器接口芯片,具备定时和计数两个基本功能,内部包含 3个 16位计数器,
每个计数器可按二进制或十进制计数,有 6种工作方式,可通过编程选择 。 在不同的工作方式下,计数过程的启动方式,OUT端的输出波形都不一样 。 自动重复功能和 GATE的控制作用以及写入新的计数初值对计数器的工作过程产生的影响是不一样的 。
本章小结第 8章内容到此结束谢谢各位 !