第8章 计数器定时器与DMA控制器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.2.4 8253的应用举例
*例8-4 IBM PC/XT系统板上8253的3个计数器的使用。 分析:IBM PC/XT机中,8253与系统总线的连接如图8-11所示。
DACK0BRD 74LS138
A5 A6 A7 A8 A9 AEN A B Y2 C G2A G2B G1 IOR IOW U26 RD WR CS 8253-5 A1 OUT0 OUT1 A0 OUT2 D7~D0 GATE0 GATE1 GATE2 CLK0 CLK1 CLK2 D 74LS74 D Q U73 IRQ0(8259) DREQ0(8237)
数制
计数器
读写格式
00 01 10 11
000 方式0 00 计数器锁存命令 计数器0 001 方式1 01 只读写低字节 0 计数器1 010 方式2 10 只读写高字节 011 方式3 计数器2 1 11 先读写低字节 100 方式4 非法(8254为读回命令) 后读写高字节 101 方式5 (P276-277)
WR
n=4
CLK
GATE OUT
8253方式5工作时序图
方式5 特点
写入计数初值,计数器并不开始计数, 而由GATE信号的上升沿触发启动
初值有效一次
30
30
8253六种工作方式的比较
方式 0 1 2 3 功 能 OUT 输出波形 写完初值变低、计数值为0(N+1个时钟) 时变高 写入控制字后变高,开始计数时变低、 计数值为0时变高(N个时钟低) 每隔N-1时钟周期,输出宽度为1个CLK 的负脉冲 输出占空比为1/2(N为偶数)或正脉冲宽 度为T×(n+1)/2 而负脉冲宽度为T×(n1)/2的连续方波 写完初值,经 N个时钟周期,输出1个时 钟周期的负脉冲 门控触发后,经 N个时钟周期,输出1个时 钟周期的负脉冲 计数结束时中 断 硬件可重触发 单稳 频率发生器 方波发生器
(8255) PB0
Q
U21 > C Q 74LS175
PCLK RESETDRV
图8-11 8253与系统总线的连接
23
方式3 特点
与方式2一样, 周期性工作.只是输出为方 波. 计数值为奇数时,前面的高电平比后面的 低电平多一个CLK脉冲. GATE变低,停止计数。
24
24
方式4:软件触发的选通信号发生器
方式4中,当计数器减到0时输出电平 翻转,再经过一个时钟周期,输出电平又 翻回原来状态,计数结束。计数初值不会 自动装入,要使计数器继续计数,就必须 通过软件重新装入计数初值 。
0 0 0 0 0 0 0
0 0 0 1 1 1 1
1 1 1 0 0 0 0
8.2.2 8253的工作方式及特点
6种工作方式可供选用 区分这6种工作方式的主要标志:
一是输出波形不同; 二是启动计数器的触发方式不同; 三是计数过程中门控信号GATE对计数操作的控 制不同。
方式0——计数结束产生中断(要求)
微机系统常常需要为处理器和外设提供时间标记, 或对外部事件进行计数。 内部定时是计算机本身运行的时间基准或时序关系, 计算机每个操作都是按照严格的时间节拍执行的。 外部定时是外部设备实现某种功能时,本身所需要 的一种时序关系
3
8.1.2 定时方法
软件定时 它是利用CPU内部定时机构,运用软件 编程,循环执行一段程序而产生的等待延时。 硬件定时 单稳延时电路产生定时或延时; 采用可编程通用的定时/计数器。
CLK GATE OUT
„„
4 重复周期变化
„„
8253方式2工作时序图
wk.baidu.com
高电平则重 新计数,相 当于复位
方式2 特点
能够连续工作,每输入N个CLK信号,OUT输 出一负脉冲。即对CLK脉冲N分频。 在计数过程中,重写初值,不影响本次计数, 但,从下一个周期按新的计数值计数。 GATE变低,停止计数。
计数结束OUT输出由低到高翻转 8253用作计数器时一般工作在方 式0。计数结束后输出端产生的输出信号 可作为中断申请信号。
__ WR
n=4
n=5
CLK
低电平则 暂停计数
4 3 2 1 0 5 4 3 2 1 0
GATE OUT
INTR
INTR
8253方式0工作时序图
高电平则 接着计数
如CW=10H WR CLK GATE
第8章 计数器/定时器与DMA控制器
8.1 计数器/定时器的工作原理
8.2 可编程计数器/定时器8253
*8.3 DMA传送的基本原理
*8.4 DMA控制器8237A
1
8.1
计数器/定时器的工作原理
8.1.1 微机系统中的定时
上课45分钟/节、RTC 时钟、节拍、操作系统时间片
8.1.1 微机系统中的定时
CLK2 GATE20 OUT2
图8-2 8253内部结构
8253的引脚功能
D7 D6 D5 D4 D3 D2 D1 D0 1 2 3 4 5 24 23 22 21 VCC WR RD CS A1 A0 CLK2 OUT2
20 8253 6 19 7 18 8 17 16
CLK0 OUT0 GATE0 GND
WR
n=4
n=4
CLK
低电平则 暂停计数
4 3 4 3 2 1 0
GATE OUT
4 3 2 1 0
8253方式4工作时序图
高电平则重 新计数,相 当于复位
方式4 特点
由写入初值来触发计数器开始工作。 初值有效一次
27
27
方式5:硬件触发的选通信号发生器
方式5与方式4相类似,只是写入计 数初值之后要靠GATE的上升沿触发启 动,才能将计数初值寄存器的内容送到 计数执行部件进行减1操作 。输出负脉 冲宽度=1 CLK
7
8.2.1 8253内部结构及引脚功能
8253的内部结构
D7~D0 数据总线 缓冲器 计数器0
16 位 初 值 , CLK 如何通过8位 GATE OUT 总线传送?
0 0 0
WR RD A0 A1 CS
读/写 逻辑
内 部 总 线
计数器1
CLK1 GATE1 OUT1
控制字 寄存器
计数器2
3个计数器、 各有6种工 作模式
计数脉冲输入CLK
计数初值寄存器
门控脉冲输入GATE 计数器 输出OUT 计数输出寄存器
图8-1 可编程计数器/定时器的基 本结构以及与系统总线的连接
8.2 可编程计数器/定时器8253
8.2.1 8253内部结构及引脚功能 8.2.2 8253的工作方式及特点 8.2.3 8253的编程 8.2.4 8253的应用举例
9
10 11 12
GATE2
CLK1 GATE1 OUT1
15
14 13
图8-3 8253 引脚
9
8253的引脚功能
表8-1 8253计数器的选择与操作
CS
RD
WR
A1 0 0 1 0 0 1 1
A0 0 1 0 0 1 0 1
功能 读计数器0当前值 读计数器1当前值 读计数器2当前值 设置计数器0的初始值 设置计数器1的初始值 设置计数器2的初始值 设置控制字
15
15
方式1:可重复触发的单稳态触发器 负脉冲宽度=N CLK __
WR CLK n=4 n=5
GATE OUT
4 3 2 1 单脉冲宽度 0
5 4 3
2
5 4 单脉冲宽度
3
2
1
计数没有结束 8253方式1工作时序图 再 触 发 , 则 重 新开始计数
④
① ② 4 ④ ⑤ ⑥
方式1
WR CLK
设定计数初值
MOV MOV OUT MOV MOV OUT MOV OUT DX,43H AL,37H DX,AL DX,40H AL,0 DX,AL AL,60 DX,AL ;设定控制端口 ;写入控制字 ;设计数器0 ;写计数初值低字节
;写计数初值高字节
37
MOV DX, 例8-2 假定8253的4个端口地址分 316H 别为310H、312H、314H、316H, MOV AL, 输入脉冲频率为2MHz,编写出用 36H 计数器0输出频率为2kHz方波的 OUT DX,AL 初始化程序。 MOV AX, 1000 分析: MOV DX, 根据题目要求,采用计数器0、工 310H 作方式3、二进制计数。 OUT DX,AL 计数初值N=(2×106)/ MOV AL,AH (2×103)=1000。 OUT DX,AL 方式控制字为00110110B,即 38 36H。
①
② ④ 4
⑤
⑥
方式0
4 3 2 1
0
OUT
④ ② ⑥ ① ⑤ 计 数 设 计 设 计 值 数定 数定 送 计 结 工 过 入 数 束 作 程 计 初 方 数 值 式 器
方式0特点
☺OUT从写入控制字时变低,写入初值开始计数,计 数到变高,可作中断申请信号。 ☺初值有效一次 ☺重写入初值后立即有效,重新计数。 ☺计数过程中,GATE为低电平时,暂停计数。 ☺设定计数值为N,则实际计数N+1个CLK脉冲。 ☺ CPU第一个CLK脉冲到来,将初值送入初值寄存器, 而第二个CLK脉冲送入计数器开始计数。
GATE
③
4 OUT
3
2
1
0
⑥ ② ⑤ ① 计 ③ 计数设 计 设 值 数硬 数定 送定 结件 过计 入工 束启 程数 计作 动 初 数方 值 器式
方式1 特点 由GATE触发,OUT产生单稳负脉冲。 初值有效多次 重写初值,不影响当前计数过程;若GATE重 新触发则按新值开始计数。
18
18
21
21
方式3:方波发生器
方波指占空比为50%的脉冲,即一个 周期,正脉宽和负脉宽各占一半时间 。 若是单数,则正脉宽多一个时钟周期。其 余同方式2。
WR
n=4
n=5
CLK GATE 4 2 0 4 2 0 4 2 0 5 2 n为奇数 重复周期 0
OUT n为偶数 重复周期
8253方式3工作时序图
方式2:分频器(要求)
方式2可对输入时钟频率进行分频,分频 因子为计数初值N,即输出频率=时钟频率/ N 计数初值N。输出频率的占空比为( 1 N )%, 即一个输出周期中,高电平所占比例为N-1 个时钟脉宽,负脉冲占一个时钟脉宽 。
__ WR
n=4
低电平则 暂停计数
4 3 2 1 0 4 3 2 1 0 4 重复周期 „ 3
4 5
软件触发选通 硬件触发选通
各种工作方式的输出波形
0 N 0 N N N/2 N 1 0/N 0/N N/2 N 0 1 0 0 0 1
方式 0
方式 1 方式 2 方式 3 方式 4
N 0 1 N
0 1
32
方式 5
8.2.3 8253编程
设定方式控制字
D7
D6
D5
D4
D3
D2
工作方式
D1
D0
例8-3
MOV OUT MOV OUT MOV OUT MOV OUT MOV OUT MOV OUT AL,76H 76H,AL AX,1000 72H,AL AL,AH 72H,AL AL,36H 76H,AL AX,2000 70H,AL AL,AH 70H,AL
设 系 统 为 8253 分 配 的 端 口 地 址 为 70H~76H,其中76H为控制字寄存器 端口地址,70H、72H、74H分别为计 数器0、1、2的端口地址。若输入脉冲 频率为2MHz,编写出用计数器0输出 频率为1Hz方波的初始化程序。 分析:由于输入时钟频率为2MHz,而 输出方波频率为1Hz,计算出计数器初 值N=(2×106)/1=2×106。此数超 出16位计数器所能够表示的范围。为 了解决这一问题,可先通过计数器1将 2MHz的输入脉冲变成2kHz方波,然后 用OUT1输出的方波作为计数器0的输 入 时 钟 。 计 数 器 1 的 计 数 初 值 N= (2×106)/(2×103)=1000,计数 器 0 的 计 数 初 值 M= ( 2×103 ) /1=2×103。 39
8.1.3 可编程计数器/定时器的工作原理
计数器:即在设置好计数初值后,便开 始对外部触发脉冲作减1计数,减为0时, 输出一个信号 。 定时器:即在设置好定时常数后,便 对外部时钟信号作减1计数,并按定时 常数不断地产生时钟周期整数倍的定 时间隔 。
数据总线 地址总线 CPU 控制总线
控制寄存器
二进制 十进制(BCD)
控制字写入控制字I/O地址 (A1A0=11)
34
8253初始化 两个内容: (1)写方式字到控制口 (2)向选定的计数器按方式的要求写入 计数初值。
35
35
设定计数初值
例8-1 设8253计数器0工作于方式3下,计数 初值为6000(十进制格式),试写出其初始 化程序。(设8253计数器0,计数器1,计数 器2及控制端口地址分别为40H~43H。) 根据题目要求,8253方式控制字应为 00110111,具体程序如下: