第七章:可编程定时 / 计时器
description
Transcript of 第七章:可编程定时 / 计时器
4
一、微机系统中的定时
微机系统常常需要为处理器和外设提供时间标记,或对外部事件进行计数。
内部定时是计算机本身运行的时间基准或时序关系,计算机每个操作都是按照严格的时间节拍执行的。
外部定时是外部设备实现某种功能时,本身所需要的一种时序关系
6
三、可编程计数器 / 定时器的工作原理
计数器,即在设置好计数初值后,便开始对外部触发脉冲作减 1 计数,减为 0 时,输出一个信号
定时器,即在设置好定时常数后,便对外部时钟信号作减 1 计数,并按定时常数不断地产生时钟周期整数倍的定时间隔。
7
控制寄存器
CRH CRL┆
CRH CRL┆
CRH CRL┆
控制逻辑
计数初值寄存器 CR
计数执行单元CE
CLK
GATE
OUTRD
WR
CS
A0
D7 ~ D0
计数输出锁存器OL
CLK: 输入脉冲信号 , 当 CLK 为周期性时钟信号时,计数器为定时器。当CLK 为非周期性时钟信号时,为计数器。GATE: 门控输入端,当门脉冲到来时,时钟 CLK 有效,进行计数操作,当门脉冲结束时,时钟无效,计数停止。
OUT: 当计数执行单元为 0时,输出一个信号,同时重新装入计数初值到计数执行单元。
工作原理:
可编程计数器 / 定时器的工作原理
10
1 、内部结构( 1 )数据总线缓冲器:三态、双向( 2 )读 / 写控制逻辑电路:产生控制芯片工作的控制信号( 3 )控制寄存器:控制计数器的工作方式,只能接受写 入的控制字。( 4 )计数器通道 0-2 :每个通道有一个可预置的 16 位减法 计数器。
可编程定时器 / 计数器 8253
11
三个计数器是独立的。每个通道有三条信号线: 计数输入 CLK— 用于输入定时基准脉冲或计数脉冲; 输出信号 OUT— 以相应的电平指示计数的完成,或
输出脉冲波形; 选通输入(门控输入) GATE— 用于启动或禁止计
数器的操作,以使计数器和计测对象同步;
每个通道有 6 种工作方式,由控制寄存器选择。计数器归 0 时由 OUT 引脚输出信号
可编程定时器 / 计数器 8253
12
2 、基本工作原理
① 控制寄存器—初始化时,将控制字寄存器中的内容写入该寄存器;
② 计数初值寄存器— 16 位计数初值寄存器 CR 用来存放计数初值,可通过程序来设定;
③ 减法计数寄存器—计数执行单元 CE 是一个 16 位减法计数器,它的初值便是计数初值寄存器的内容,它只对CLK 脉冲计数,一旦计数器被启动后,每出现一个CLK 脉冲,计数执行单元中的计数值减 1 ,当减为零时,通过 OUT 输出指示信号,表明计数执行单元已为零。
可编程定时器 / 计数器 8253
13
当 CLK 是一个周期性时钟信号时,计数器为定时器功能;当 CLK 是一个非周期性事件计数信号时,此时呈计数器功能。
计数输出锁存器 OL 通常跟随计数执行单元的内容而变化,当接收到 CPU 发来的锁存命令时,就锁存当前的计数值而不跟随计数执行单元变化,直到 CPU从中读取锁存值后,才恢复到跟随计数执行单元变化的状态。GATE 是控制输入端,它有多种控制作用,如允许 / 禁止计数、启动 / 停止计数。
可编程定时器 / 计数器 8253
15
D0—D7: 数据线,双向三态 A1 、 A0 :端口选择信号, 8253 有 4 个口地址:
CS : 片选信号WR : 读信号RD :写信号CLK0 ~ CLK2 OUT0 ~ OUT2GATE0 ~ GATE2
A1 A0 口地址 A1 A0 口地址0 0 计数器 0 1 0 计数器 2
0 1 计数器 1 1 1 控制寄存器
可编程定时器 / 计数器 8253
16
CS RD WR A1 A0 端口 操作1 * * * * 未选中 禁止0 1 1 * * 选中 无操作0 1 0 0 0 计数器 0 置计数初值0 1 0 0 1 计数器 1 置计数初值0 1 0 1 0 计数器 2 置计数初值0 1 0 1 1 控制寄存器 设置命令控制字0 0 1 0 0 计数器 0 读出计数值0 0 1 0 1 计数器 1 读出计数值0 0 1 1 0 计数器 2 读出计数值0 0 1 1 1 无操作
4 、 8253 端口操作:
可编程定时器 / 计数器 8253
17
工作方式控制字格式
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
5 、 8253 的控制字和工作方式 8255 有 3 个计数通道,但只有 1 个通道控制器。 CPU 通过对控制寄存器写控制字,可以分别对 3 个计数通道的工作方式进行设置。
8253 控制字共分为 4 部分:通道选择、计数器读 / 写方式、工作方式和计数码的选择。
可编程定时器 / 计数器 8253
19
二进制计数时: 1 个计数器最多可计 216=65536 个脉冲,计数初值为 0000H ;最少可计 1 个脉冲,计数初值为 0001H 。BCD码计数时: 1 个计数器最多可计 104=10000 个脉冲,计数初值为 0000H ;最少可计 1 个脉冲,计数初值为 0001H
8253 初始化: 对一个通道先写入控制字再写入时间常数(计数初值)
可编程定时器 / 计数器 8253
20
7.2.2 8253-5 的工作方式
1 、方式 0— 计数结束中断方式 方式 0 是典型的事件计数用法, CLK 端作为事件计数输入信号,当计数执行单元 CE 为零时, OUT 端变为高电平,它可作为中断请求信号。当计数初值再次写入通道后计数器方可工作。
8253 有 6 种工作方式,在不同的工作方式下,计数器的启动方式、 GATE 端的输入信号的作用以及OUT 端的输出波形都有所不同。
可编程定时器 / 计数器 8253
21
① 控制字( CW )写入后 OUT 即变为低电平,当计数器为 0 时,输出 OUT变为高电平。
② 计数初值写入后在下一个 CLK下降沿才送入计数器,因此计数值为 N+1 。
方式 0的时序波形
8253-5 的工作方式
22
③ 当 GATE 变为低电 平时计数停止,再变为高电平时计数继续进行。
④若计数过程中重新送入初值,则按新值重新计数。
⑤ 计数到零后,不能自动恢复计数初值, OUT 端保持高电平。
8253-5 的工作方式
23
( 2 )方式 1 — 硬件可重触发单稳态方式 计数器相当于一个可编程的单稳态电路,触发输入为GATE 信号,由 GATE 的上升沿触发计数器工作。方式 1 的特点和应用:计数器的启动只能由门控脉冲的上升沿产生,即只能用硬件启动。OUT 输出为一个单稳态负脉冲,其脉宽为计数初值个CLK 时钟脉冲的周期之和。在形成单稳态脉冲过程中,可以重触发。在微机实时控制系统中常用作监视时钟。
8253-5 的工作方式
24
方式 1 的时序波形 :
① 写 入 CW 后 OUT 变为 高 电 平 , GATE 上升沿触 发后, OUT变为低并开始计数,归零时 OUT变为高电平。
② GATE再来一次上升沿使 OUT 为低,计数器以初值重新计数。
8253-5 的工作方式
27
( 3 )方式 2— 速率发生器( Rate Genenator ) 方式 2 能产生周期性的定时信号,称为速率发生器,又称为 N 分频方式和周期性定时器方式。
方式 2 的特点和应用: CR 内容能自动地、重复地装入到 CE 中, OUT 端上就能连续地输出周期性分频信号。
即可软件启动,又可硬件启动。 改变计数初值,即可获得不同速率的 OUT 输出信号。 负脉冲宽度均为一个 CLK 脉冲的周期。 主要应用作为分频器和时基信号。
8253-5 的工作方式
28
方式 2 的时序波形 :
① 写入 CW 后 OUT 为高电平,写入时间常数后,下一CLK 开始计数,减到 1 时 OUT变低,经过一个 CLK 后OUT变高,计数重新开始。若初值为 N , OUT 端输出信号为 CLK 端的 1/N
8253-5 的工作方式
31
( 4 )方式 3— 方波方式( Square Ware Mode )
方式 3 的操作方式除OUT 输出方波之外,和方式 2相似。方波的重复周期是计数初值个 CLK 脉冲周期之和。
方式 3 的特点和应用:
方式 3 的计数过程是 CE 内容减 2 。软件启动和硬件启动两种。改变计数初值, OUT 端将输出不同频率。主要应用作为方波发生器和波特率发生器。
8253-5 的工作方式
32
方式 3 的时序波形 :
① 写入 CW 后 OUT变为高电平,输入时间常数后,下一个时钟开始计数,计到一半时输出变为低电平,计到终值时重新变为高电平,并开始下一次计数过程。
8253-5 的工作方式
34
③ GATE=1 计数进行。在计数过程中若 GATE=0 ,计数停止且 OUT 为高,计数器重新赋初值, GATE回到高电平时计数重新开始。
④计数期间送入新值,本周期继续进行,下一个周期按新值计数。
8253-5 的工作方式
35
方式 4 的特点和应用:输出类似于方式 2 的波形OUT 输出为一个负脉冲,负脉冲宽度均为一个 CLK 脉冲的周期。软件触发启动
计数过程由软件将计数初值装入通道来触发。当写入方式控制字 CW 后, OUT 端输出高电平。在写入计数初值后的一个CLK 脉冲开始减 1 计数,直到 CE 为零时,使 OUT 输出变为低电平,当持续一个 CLK 脉冲周期后又恢复到高电平。在 OUT 端产生一个 CLK 脉冲周期宽度的选通负脉冲输出。
(5) 方式 4— 软件触发选通方式
8253-5 的工作方式
39
8253-5 的工作方式
( 6 )方式 5 — 硬件触发选通方式 与方式 5 和方式 1 有些相似。 CE 到零时 OUT 端产生宽度为 1 个 CLK 脉冲周期的负脉冲选通输出信号。
① 写入 CW 后 OUT 为高电平,输入时间常数后由 GATE上升沿启动计数。计数为 0 时输出一个时钟的负脉冲,并停止操作。
42
三、 8253-5 的初始化1 、写入方式控制字 三个通道用的控制字端口地址是相同的,三个控制字写入后存入通道对应的寄存器中。
2 、写入计数初始值 ① 初值计算 计算公式 T = TCLK * N = N / fCLK
T为定时时间, TCLK 为计数脉冲的, FCLK 为计数频率, N 为计数初值。
8253-5 的工作方式
43
例 8253 通道 0 的 CLK0 外接频率 fCLK为 1MHZ 的时
钟信号,若按二进制计数方式工作,可定时的时间范围为多少?写入计数器 0 的计数初值是多少?若要定时 10ms则设置的计数初值为多少?解: TCLK=1/1MHz=1/106=10-6 秒
=10-3毫秒
计数初值为 :10001
T = N / fCLK =TCLK * NN=T/TCLK=10/10-
3=10000
1 个计数器最多可计 216=65536 个脉冲可定时的时间 0.000001 ~ 0.065536秒。计数初值为0000H
8253-5 的工作方式
44
D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 1 0 0 1 0
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 1 0 1 0 1
例: 8253 计数器 0 工作于方式 1 ,按二进制计数,计数初值为 5080H ,计数器 1 工作于方式 2 ,按BCD码计数,计数初值为 2500 ,若 8253口地址为2A0H-2A3H, 写出控制字。
计数器 0 :
计数器 1 :
45
例 7-1 :计数器 0 工作在方式 3 下,输出方波的重复频率为 2KHz ,计数脉冲的输入为 2.5MHz ,采用 BCD 计数,写出初始化程序段 .计算计数初值:
T=2.5MHz/2KHz=1250
方式控制字:00110111B=37H
初始化程序:MOVAL , 37HOUT 83H , ALMOVAL , 50H
OUT 80H , ALMOV AL , 12HOUT 80H , AL
46
3 、读计数值 在动态读计数值时可以有两种方法: ( 1 )以普通对计数器端口读的方法取得当前计数值。按工作方式控制字中 RL1RL0 位的规定,可以读出指定字节的计数值,因计数在进行,可用 GATE阻止计数。
( 2 )锁存计数器的当前计数值。使用方式控制字, SL1SL0 位指定要读的计数器通道号, RL1RL0=00 ,使方式字成为一个软件命令,当前计数值锁存到锁存寄存器,而计数器可继续工作。
47
7.2.4 8253-5 的应用举例例 7-2: 监视生产流水线当计满50 个工件后,扬声器响5 分钟。采用 8253-5 的通道 0 对工
件计数,通道 1 产生方波驱动喇叭,持续5 分钟。 ( 1 )硬件接口电路
48
( 1 ) 8253 控制字 通道 0 工作于方式 2 计数方式,采用 BCD 计数,计数初值50 ,方式控制字为 :00010101(15H)
D7 D6 D5 D4 D3 D2 D1 D0
SC1
0
SC00
RL10
RL01
M20
M11
M00
BCD1
通道 1 工作于方式 3 定时方式,采用 BCD 计数 ,外接 2.5MHZ, 产生 2000HZ 方波。
01110111方式控制字为 :
计数初值为 :2.5 X 106/2000=1250
8253-5 的应用举例
49
设 8253 地址 :40H ~ 43H,8255 地址 :80H ~ 83H主程序为:
MOV AL , 15H OUT 43H , AL
MOV AL , 50H OUT 40H , AL STI
LOP : JMP $
8253-5 的应用举例
50
中断服务程序为: MOV AL , 01H ; 置 8255A
PA0 ( GATE1 )为 1 OUT 80H , AL MOV AL , 77H ;设置通道 1
OUT 43H , ALMOV AL , 50 ;送 1250 计数初值
OUT 41H , ALMOV AL , 12OUT 41H , ALCALL DL5S ;延时 5SMOV AL , 00H ;置 8255A
PA0 ( GATE1 )为 0 OUT 80H , ALIRET
8253-5 的应用举例
52
工作原理分析:⑴计数器 0 用来产生实时日时钟信号,工作于方式 3 ,计数初值
为 0 ,采用二进制计数方式,输出端 OUT0 作为中断请求信号IRQ0 ,输出 1193181.6/65536=18.2Hz 的方波脉冲。
⑵计数器 1 用来产生动态存储器刷新操作的定时控制信号。它工作于方式 2 ,计数初值为 18 , OUT1 端输出一个负脉冲序列,其脉冲周期约为 18÷1.1931816MHz = 15.08 ( μs )。
⑶计数器 2 用于为系统中的扬声器发声时提供一个约为 900Hz的方波信号。它也工作于方式 3 ,计数初值为0533H ( 1331 ), GATE2 接入一个来自系统板上 8255A
的 PB0 ,作为扬声器发声时间的控制信号 。
8253-5 的应用举例
53
2. 8253 的初始化程序段 ⑴对计数器 0 的初始化程序:
MOV AL , 00110110BOUT 43H , ALMOV AL , 0OUT 40H , ALOUT 40H , AL
⑵对计数器 1 的初始化程序:MOV AL, 01010100BOUT 43H , ALMOV AL , 18OUT 41H , AL
8253-5 的应用举例
54
MOV AL , 10110110BOUT 43H , ALMOV AX , 0533HOUT 42H , ALMOV AL , AHOUT 42H , ALIN AL , 61HMOV AH , ALOR AL , 03HOUT 61H , AL
⑶对计数器 2 的初始化程序:
8253-5 的应用举例
55
例 7-5 8253 在实时控制系统中的应用 将 8253 的两个计数器串联起来,使其中的一个计数器作为定时器,当分频器使用,将其OUT 输出信号作为另一个计数器的 CLK 脉冲信号;而另一计数器只起计数作用,其OUT 输出端作为中断请求信号。
设 8253 端口地址为: 230H ~ 233H , 8259 中的IR2 将作为采样周期中断源的输入端,中断类型码为0AH 存放在 0028H ~ 002BH 单元中,中断服务程序为 RTIME 。
8253-5 的应用举例
57
计数器 0 工作在方式 2 下,初值为 0 ,仅写低八位字节,采用二进制计数,计数器 1 工作在方式 2 下,计数初值来自采样周期变量 TIME ,按先低后高的次序将 16 位计数值写入 CR 并采用二进制计数方式。
8253 初始化和设置中断处理首地址到中断向量表的程序段:
MOV DX , 233H ;写入计数器 0 的控制字
MOV AL , 00010100B
OUT DX , AL
8253-5 的应用举例
58
MOV DX , 230H ;计数器 0 的计数初值写入 CRL
MOV AL , 00H
OUT DX , AL
MOV DX , 233H ;写入计数器 1 的控制字MOV AL , 01110100B
OUT DX , AL
MOV DX , 231H ;计数器 1 的计数初值写入 CR
MOV AL , BYTE PTR TIME
OUT DX , AL
MOV AL , BYTE PTR TIME+1
OUT DX , AL
8253-5 的应用举例
59
MOV DI , 28H
MOV AX , OFFSET RTIME ;中断服务程序入口地址存入向 量表CLD
STOSW
MOV AX , SEG RTIME
STOSW
…
8253-5 的应用举例
62
初始化程序: MOV AL , 00110101B
OUT 83H , AL
MOV AL , 00H
OUT 80H , AL
MOV AL , 10H
OUT 80H , AL
MOV AL , 01110011B
OUT 83H , AL
MOV AL , 00H
OUT 81H , AL
8253-5 的应用举例
63
MOV AL , 05H
OUT 81H , AL
MOV AL , 10110111B
OUT 83H , AL
MOV AL , 00H
OUT 82H, AL
MOV AL , 20H
OUT 82H , AL
8253-5 的应用举例