9299.net
大学生考试网 让学习变简单
当前位置:首页 >> >>

第二十二讲:计数定时技术(一) 主讲老师:王克义_图文

第二十二讲:计数定时技术(一)  主讲老师:王克义_图文

《微机原理A》 第二十二讲:计数/定时技术(一)
主讲老师:王克义
课程主页:http://mprc.pku.edu.cn/courses/wjyl/

本讲主要内容
定时/计数的基本方法 可编程计数器/定时器8253的基本结构 8253的编程应用

22.1 概述
实现定时的三种方法: (1) 软件定时 由CPU执行指令序列所花费的时间来构成一定 的时间间隔,从而达到定时的目的. 例如: MOV CX , ××××H HERE: LOOP HERE 优点:不需要专门的硬件设备. 缺点: 浪费了宝贵的CPU资源.

(2)不可编程的硬件定时
时序波形 稳态 单稳态 电路 td 暂稳态

触发信号

(3)可编程计数器/定时器
可用软件的方法(通过初始化编程)设定或调整定 时范围. 典型产品: Zilog Z80-CTC Intel 8253(8254)

22.2 可编程计数器/定时器8253
1. 8253 的主要功能 (1)具有三个独立的16位计数通道; (2)每个计数通道可按二进制或二-十进制计数; (3)每个计数通道的计数速率可达2MHz; (4)每个计数通道有六种工作方式; (5)全部输入输出都与TTL电平兼容.

2. 8253的结构
8253的内部结构框图如图22.1所示. 由图可见,它由与CPU的接口,内部控制电路以及 三个计数器通道所组成.

D7~D0

数据 总线 缓冲器

CLK0 计数器 0 GATE0 OUT0

RD WR A0 A1 CS

CLK1

读/写 逻辑

计数器 1

GATE1 OUT1

控制字 寄存器

计数器 2

CLK2 GATE2 OUT2

内部总线

图22.1 8253内部结构框图

(1) 数据总线缓冲器 这是8253与CPU的数据总线(D7~D0)连接的8 位双向三态缓冲器. CPU用输入输出指令对8253进行读写操作时的 所有信息都通过这个缓冲器传送. (2) 读/写逻辑 这是8253内部操作的控制电路,它从系统控制总 线上接收输入信号,然后转换成8253内部操作的 各种控制信号.

(3)控制字寄存器 当地址信号A1和A0都为1时,访问控制字寄存器. 控制字寄存器从数据总线上接收CPU送来的控制 字,并由控制字的D7,D6两位的编码决定控制字 写入哪个通道的控制寄存器中去. 由寄存在每个通道内的控制寄存器的内容决定该 通道的工作方式,选择计数器是按二进制还是 BCD数计数,并确定每个计数器初值的写入顺序.

(4)计数器0,计数器1,计数器2 这是三个计数器/定时器通道,每一个都由16位的 可设置计数初值的减法计数器构成. 三个通道的操作是完全独立的.每个通道都有两 个输入引脚CLK和GATE以及一个输出引脚OUT. 从编程的角度看,8253的结构框图如图22.2所示.

图22.2 8253计数通道结构
数据总线 D7~D0 高8位 RD RD WR WR IO/M 地址 译码 CS 计数器1 A1 A0 计数器2 高8位 低8位 输出锁存器(OL) 计数执行部件 (CE) 低8位 计数器0 控制寄存器(8位) 计数初值寄存器 (CR) VCC GND

高8位

低8位

CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2

"控制寄存器"及"计数初值寄存器(CR)"可由CPU 写入; "输出锁存器(OL)"可由CPU读出.

3. 8253的引脚
8253的引脚如图22.3所示.
D7 D6 D5 D4 D3 D2 D1 D0 CLK0 OUT0 GATE0 GND 1 2 3 4 5 6 7 8 9 10 11 12 8253 24 23 22 21 20 19 18 17 16 15 14 13 Vcc WR RD CS A1 A0 CLK2 GATE
2 OUT2

CLK1 GATE1 OUT1

22.3 8253的引脚图

4. 8253 的工作方式
8253的每个通道均可以通过编程选择6种工作方 式之一: (1) 方式0——计数到零产生中断请求 (Interrupt on Terminal Count) 方式0的操作时序图如图22.4所示.

图22.4 方式0的时序图
CW WR CLK N=4

N+1个

GATE(高)

OUT 4 3 2 1 0

方式0的主要特点是:
1) 计数器只计一遍而不能自动重复工作. 当减1计数到零时,并不自动恢复计数初值重新 开始计数,且OUT输出保持为高电平. 只有CPU再次写入一个新的计数值(即使计数值 相同也需再次写入),OUT才变为低电平,计数 器按新写入的计数值重新开始计数. 或者CPU重新对8253设置方式0控制字,它的 OUT输出也可以立即变为低电平,并等再次写 入计数初值后重新开始计数.

2) CPU向CR寄存器写入计数初值后的第一个CLK 脉冲(即图中用斜线标出的那个脉冲),将CR的 内容送入CE,从此之后计数器才开始减1计数. 这第一个CLK脉冲不包括在减1计数过程中. 如果设置计数初值为N,则输出OUT是在N+1个 CLK脉冲之后才变为高电平. 3) 在计数过程中,可由GATE信号控制暂停计数. 当GATE变低时,计数暂停; 当GATE变高后又接着计数. 其工作波形如图22.5所示.

CW WR CLK

N=3

GATE

OUT 3 2 2 2 1 0

图22.5 方式0计数过程中改变GATE信号

4) 在计数过程中也可改变计数值. 在写入新的计数值后,计数器将立即按新的计数 值重新开始计数,即改变计数值是立即有效的. 当按新的计数值减1计数到0时,输出OUT变为高 电平.其工作波形如图22.6所示.

WR CLK

C W

N=3

N=2

GATE(高)

OUT 3 2 1 2 1 0

图22.6 方式0计数过程中改变计数值

(2) 方式1—硬件可重复触发的单稳态触发器 ( Programmable one-shot) 方式1的时序图如图22.7所示.

WR CLK

CW

N=2

GATE

OUT 2 1 0 2 1 0

图22.7 方式1的时序图

在方式1,当CPU输出控制字后(WR的上升沿), OUT输出变为高电平(若原为高电平,则保持为高 电平); 在CPU写入计数初值后,计数器并不开始计数, 直至门控信号GATE上升沿(即门控触发信号)出 现,并在其下一个CLK脉冲的下降沿,CR的内容 送入CE,同时使OUT输出变为低电平,然后开始 对随后的CLK脉冲进行减1计数.

在计数过程中,OUT一直维持为低电平,直至减 1计数到0时,OUT输出变为高电平. 即由于GATE上升沿的触发,使OUT输出端产生 一个宽度为N个CLK周期的负脉冲. 此后,若再次由GATE上升沿触发,则输出再次 产生一个同样宽度的负脉冲.

方式1的主要特点是:
1) 若设置计数初值为N,则输出负脉冲的宽度为N 个CLK脉冲周期. 2) 当计数到零时,可再次由GATE上升沿触发,输 出同样宽度的负脉冲,而不必重新写入计数初值.

3) 在计数过程中(输出负脉冲期间),可由GATE上 升沿再触发.并使计数器从计数初值开始重新作 减1计数,减至0时,OUT输出变为高电平. 其效果是使输出负脉冲的宽度比原来加宽了. 4) 在计数过程中,CPU可改变计数初值,这时计数 过程不受影响,计数到零后输出变高. 当再次触发时,计数器才按新输入的计数值计数. 即改变计数值是下次有效的.

(3) 方式2——分频器 (Rate Generator)
在方式2,当CPU输出控制字后,OUT输出为高. 在写入计数初值后,计数器将自动对输入时钟 CLK计数. 在计数过程中OUT输出为高,直至计数器减到 1(注意,不是减到0)时,OUT输出变低,经过一 个CLK周期,输出恢复为高,且计数器将自动重 新开始计数. 这种方式可作脉冲速率发生器或用来产生实时时 钟中断信号. 方式2的时序图如图22.8所示.

WR

C W

N=3

CLK GATE(高)

OUT 3 2 1 3 2 1 3

图22.8 方式2时序图

方式2的主要特点是:
1) 不用重新设置计数值,通道能连续工作,输出固 定频率的脉冲.
– 如果计数初值为N,则每输入N个CLK脉冲,输出一 个负脉冲. – 负脉冲宽度为1个CLK周期,重复周期为N倍的CLK 周期.

2) 计数过程可由GATE信号控制.
– 当GATE信号变低时,立即暂停现行计数; – 当GATE信号又变高后,从计数初值开始重新计数.

3) 如果在计数过程中,CPU重新写入计数值,则对 于正在进行的计数无影响,而是从下一个计数操 作周期开始按新的计数值改变输出脉冲的频率.

(4) 方式3——方波发生器
方式3和方式2的工作情况类似,两者的主要区别 是输出波形的形式. 对于方式3,OUT输出是对称方波或基本对称的 矩形波.即在一个计数周期内,若计数初值N为 偶数,则OUT输出将有N/2个CLK周期为高电 平,N/2个CLK周期为低电平,输出为对称方 波,其周期为N个CLK周期; 若N为奇数,则OUT输出将有(N+1)/2个CLK周期 为高电平,(N-1)/2个CLK周期为低电平,输出为 基本对称的矩形波,其周期也为N个CLK周期.

在方式3,当CPU设置控制字后,输出将为高, 在写完计数初值N后计数器就自动开始计数,输 出保持为高. 当计数到N/2(或(N+1)/2)时,输出变低,直至计 数到0,使输出变高.同时又重新装入计数值开始 新的计数. 计数过程周而复始重复进行. 这种方式常用来产生一定频率的方波. 方式3的时序图如图22.9所示.

WR CLK

CW

N=4 (N=5)

GATE(高)
OUT(N=4时)

4
OUT(N=5时)

3

2

1

4

3

2

1

5

4

3

2

1

5

4

3

图22.9 方式3时序图

方式3的主要特点是:
1) 若计数初值N为偶数,则输出波形是周期为N个 CLK周期的对称方波;若计数初值N为奇数,则 输出波形是周期为N个CLK周期的基本对称矩形 波,其高电平持续时间比低电平持续时间多一个 CLK周期. 2) 如果在计数过程中,GATE信号变低,则暂停现 行计数过程,直到GATE再次有效,将从计数初 值开始重新计数. 3) 如果要求改变输出方波的频率,则CPU可在任何 时候重新写入新的计数初值,并从下一个计数操 作周期开始改变输出方波的频率.

(5) 方式4——软件触发选通
在方式4,当写入控制字后,OUT输出为高.当 写入计数初值后计数器即开始计数(相当于软件触 发启动),当计数到0后,输出变低,经过1个CLK 周期,输出又变高. 方式4不能自动重复计数,即这种方式计数是一 次性的. 每次启动计数都要靠重新写入计数值,所以称为 "软件触发选通". 当8253工作于方式4时,可用作软件触发的选通 信号发生器.

CW WR CLK

N=3

GATE(高) OUT 3 2 1 0

图22.10 方式4时序图

方式4的主要特点是:
1)若设置计数初值为N,则在写入计数初值后的N+1 个CLK脉冲,才输出一个负脉冲.负脉冲的宽度 为1个CLK周期. 2) GATE为高时,允许计数;GATE为低时,禁止 计数.所以,要实现软件启动,GATE应为高. 3) 若在计数过程中改变计数值,则按新的计数值重 新开始计数,即改变计数值是立即有效的.

方式4可应用于这样一种情况: CPU经输出端口发送并行数据给接收系统,经过 一段时间延迟后,再发送一个选通信号,利用该 选通信号将并行数据打入到接收系统的缓冲寄存 器中. 通过改变计数初值N,可以方便地调整发出选通信 号的延迟时间.

(6) 方式5—硬件触发选通
在方式5,设置了控制字后,输出为高. 在设置了计数初值后,计数器并不立即开始计 数,而是由门控信号GATE的上升沿触发启动. 当计数到0时,输出变低,经过一个CLK周期, 输出恢复为高,并停止计数. 要等到下次门控GATE信号的触发才能再计数, 即方式5的计数是一次性的.

WR CLK

C W

N= 3

GATE OUT 3 2 1 0

图22.11 方式5时序图

方式5的主要特点是:
1) 若设置计数初值为N,则在门控GATE上升沿触 发后,经过N+1个CLK脉冲,才输出一个负脉冲. 2) 若在计数过程中再次出现门控GATE触发信号, 则将使计数器从计数初值开始重新计数,但OUT 输出的高电平不受影响. 3) 若在计数过程中改变计数值,只要在计数到0之 前不出现新的门控触发信号,则原计数过程不受 影响;等计数到0并出现新的门控发信号后,再按 新的计数值计数. 若在写入了新的计数值后,在未计数到0之前 有门控触发信号出现,则立即按新的计数值重新 开始计数.

4. 8253工作方式小结 1) 方式2(分频器),方式4(软件触发选通)和方式5(硬
件触发选通),它们的输出波形相同,都是宽度为1 个CLK周期的负脉冲. 区别是,方式2是自动重复工作的,而方式4需 由软件(设置计数值)触发启动,方式5需由门控 GATE信号触发启动. 2) 方式5(硬件触发选通)与方式1(硬件触发单稳),触 发信号相同,但输出波形不同.
– 方式1输出为宽度是N个CLK周期的负脉冲(计数过程中 输出为低); – 方式5输出为宽度是1个CLK周期的负脉冲(计数过程中 输出为高).

3) 在6种工作方式中,只有方式0在写入控制字后输出为 低;其余5种方式,都是在写入控制字后输出为高. 4) 6种工作方式中的任一种方式,只有在写入计数初值后才 能开始计数.
– 方式0,2,3,4都是写入计数初值后,计数过程就开始了. – 方式1,5在写入计数初值后,需由外部GATE信号的触发启动, 才能开始计数过程.

5) 6种工作方式中,只有方式2(分频器)和方式3(方波发生器) 为自动重复工作方式,其他4种方式都是一次性计数,要 继续工作需要重新启动.

作业(二十二)
教材P569 2. 3. 4. 5. 6.


网站首页 | 网站地图 | 学霸百科 | 新词新语
All rights reserved Powered by 大学生考试网
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com