第九章 Intel 8253 定时器 / 计数器

58
qiu 1 qiu 1 qiu 1 qiu 第 9 第 第第第 Intel 8253 第第第 / 第第第 第第 一、 第第 / 第第第第第第第第 第第第第第第 / 第第第 8253 8253 第第第

description

第九章 Intel 8253 定时器 / 计数器. 一、概述 二、计数 / 定时器的工作原理 三、可编程计数器 / 定时器 8253 四、 8253 的应用. 一、概述 1 、定时与计数器的概念 定时器: 在时钟信号作用下,进行定时的减 “ 1 ” 计数,定时时间到(减 “ 1 ” 计数回零),从输出端输出 周期均匀、频率恒定的 脉冲信号。 由上述可知,定时器强调的是精确的时间。. 定时举例: ①一天 24 小时的计时,称为日时钟。 ②在监测系统中,对被测点的定时取样。 ③在读键盘时,为去抖,一般延迟一段时间,再读。 - PowerPoint PPT Presentation

Transcript of 第九章 Intel 8253 定时器 / 计数器

Page 1: 第九章  Intel 8253 定时器 / 计数器

qiu 1 qiu 1 qiu 1 qiu

第 9 章第 9 章

第九章 Intel 8253 定时器 / 计数器

一、概述

二、计数 /定时器的工作原理

三、可编程计数器 /定时器 8253

四、 8253 的应用

Page 2: 第九章  Intel 8253 定时器 / 计数器

qiu 2 qiu 2 qiu 2 qiu

第 9 章第 9 章

一、概述 1 、定时与计数器的概念 定时器:在时钟信号作用下,进行定时的减“ 1”计数,定时时间到(减“ 1”计数回零),从输出端输出周期均匀、频率恒定的脉冲信号。 由上述可知,定时器强调的是精确的时间。

Page 3: 第九章  Intel 8253 定时器 / 计数器

qiu 3 qiu 3 qiu 3 qiu

第 9 章第 9 章

定时举例: ①一天 24 小时的计时,称为日时钟。 ②在监测系统中,对被测点的定时取样。 ③在读键盘时,为去抖,一般延迟一段时间,再读。 ④在微机控制系统中,控制某工序定时启动。

Page 4: 第九章  Intel 8253 定时器 / 计数器

qiu 4 qiu 4 qiu 4 qiu

第 9 章第 9 章 计数器: 在时钟信号作用下,进行减“ 1”计数,计数次数到(减“ 1”计数回零),从输出端输出一个脉冲信号。

计数举例:①对零件和产品的计数;②当外部时间发生的次数达到规定值后,向计算机发出中断请求。

计数操作可采用软件实现也可采用硬件实现,或者将二者结合使用。

Page 5: 第九章  Intel 8253 定时器 / 计数器

qiu 5 qiu 5 qiu 5 qiu

第 9 章第 9 章2. 定时信号的产生方法:硬件方法和软件方法。

软件定时软件定时 就是根据所需要的时间常数来设计一个延迟子程序,这样作的优点是节省硬件,缺点是耗费 CPU 的资源较多,降低了 CPU 效率,且编写软件略显麻烦,通常延迟时间较小且重复次数有限的情况下,使用该方法。 硬件定时硬件定时 1.1. 不可编程的硬件定时不可编程的硬件定时 是用元器件搭成的延迟电路。例如: LM555 2.2. 可编程的硬件定时可编程的硬件定时 用专用芯片——计数器 /定时器,其优点是不占用 CPU 时间,且利用计数器 /定时器产生中断信号,就可以建立多作业环境,以提高 CPU 效率,由于计数器 /定时器开销不大,因此得到了广泛应用。

 

Page 6: 第九章  Intel 8253 定时器 / 计数器

qiu 6 qiu 6 qiu 6 qiu

第 9 章第 9 章 二 . 计数 /定时器的工作原理

计数 /定时的功能•对外部事件发生次数进行计数•计算机系统经常用到定时信号,如 DRAM 刷新定时计数和计时本质上是相同的,它们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。

例如输入脉冲频率为 2MHz ,那么计数 2106

计时 1秒

因此,使用同一个芯片,既能计数,又能计时——计时器 /计数器

Page 7: 第九章  Intel 8253 定时器 / 计数器

qiu 7 qiu 7 qiu 7 qiu

第 9 章第 9 章

控制寄存器

预置计数值寄存器

计数器

状态寄存器

CLK

GATE

OUT

组成:四个寄存器和一个计数器

控制寄存器:决定工作模式状态寄存器:反应工作状态预置计数值寄存器: 计数的初值计数器输出寄存器: CPU 从中读当前计数值计数器:执行计数操作, CPU 不能访问

计数器输出寄存器

Page 8: 第九章  Intel 8253 定时器 / 计数器

qiu 8 qiu 8 qiu 8 qiu

第 9 章第 9 章

工作原理:对 CLK信号进行减 1计数

• 首先, CPU把控制字写入控制寄存器,计数初始值写入初值寄存器• 计数从初值开始,每当 CLK信号出现一次,计数值减 1• 当计数值减到 0,从 OUT端输出规定的信号• CLK信号出现时,计数器是否减 1 ,由门控信号 GATE控制

Page 9: 第九章  Intel 8253 定时器 / 计数器

qiu 9 qiu 9 qiu 9 qiu

第 9 章第 9 章

CLK是计数输入信号,计数器对 CLK端出现的脉冲个数进行计数

•CLK端可以输入外部事件•CLK端可以接入固定频率的时钟信号,从而实现计时

OUT信号在计数结束时发生变化•可将 OUT作为外部设备的控制信号•可将 OUT作为向 CPU申请中断的信号

CPU 可以从计数器输出寄存器读出当前计数值。读前,应向控制寄存器发送锁存命令

Page 10: 第九章  Intel 8253 定时器 / 计数器

qiu 10 qiu 10 qiu 10 qiu

第 9 章第 9 章 三、可编程计数器 /定时器 8253

1.Intel 8253 定时器 /计数器的基本性能参数

1)、一片 8253内部有 3个 16位的计数器(相互独立) 2)、每个计数器的内部结构相同,可通过编程手段设置为

6 种不同的工作方式来进行定时 /计数 3)、每个计数器再开始工作前必须预制时间常数(时间初 始) 4)、每个计数器在工作过程中的当前计数值可被 CPU 读出 . (注:时间常数也可在计数过程中更改)

Page 11: 第九章  Intel 8253 定时器 / 计数器

qiu 11 qiu 11 qiu 11 qiu

第 9 章第 9 章2. 8253 的编程结构

8253 是 24 引脚双列直插式芯片,其中: D7~D0 是数据线引脚, RD和 WD 分别是读写控制引脚, CS 是片选信号。 A1,A0 是片内地址选择引脚。     8253 的三个计数通道在结构上和功能上完全一样,每个通道均有两个输入引脚 CLK 和 GATE ,一个输出信号 引脚 OUT 。

Page 12: 第九章  Intel 8253 定时器 / 计数器

qiu 12 qiu 12 qiu 12 qiu

第 9 章第 9 章 3.8253 定时器 /计数器的内部结构框图

8253 内部有 6 个模块

CLK1

GATE1

OUT1

CLK2

GATE2

OUT2

CLK0

GATE0

OUT0数据总线缓冲器

读 / 写逻辑电路

A0A1RDWR

CS

8D0-D7

控制寄存器

计数器 0

计数器 1

计数器 2内

部总

线

Page 13: 第九章  Intel 8253 定时器 / 计数器

qiu 13 qiu 13 qiu 13 qiu

第 9 章第 9 章数据总线缓冲器

• 8253 与数据总线的接口部件,是 8位的三态双向缓冲器, CPU 对 8253 读写的数据,控制及状态信息都通过这 8条数据线传送,读写的内容包括:

• CPU 向 8253传送的确定 8253 工作方式的控制字

• CPU 向某一计数器装入计数初值 • CPU 从某一计数器读出计数初值

Page 14: 第九章  Intel 8253 定时器 / 计数器

qiu 14 qiu 14 qiu 14 qiu

第 9 章第 9 章 读 / 写逻辑电路 • CS片选信号,低电平有效,有效时可以访问 8253 ,为高电平时,数据总线缓冲器处在高阻状态。

• RD,WR 读写控制信号,控制数据的传送方向,当 RD有效时,数据由 8253传向 CPU (读当前计数值 );当 WR 有效时,数据由 CPU传向 8253(写控制字和计数初值 )。

• A1,A0接系统总线的 A1,A0 ,用于选择 8253 的计数器和控制寄存器。 A1 A0

0 0 计数器 0 0 1 计数器 1 1 0 计数器 2 1 1 控制寄存器

Page 15: 第九章  Intel 8253 定时器 / 计数器

qiu 15 qiu 15 qiu 15 qiu

第 9 章第 9 章控制寄存器它接受 CPU送来的控制字。

计数器 0,1,2 8253 有 3个独立的计数器 /定时器,计数器 0, 1, 2,每个计数器的内部结构相同,操作完全相同。 每个通道的外部均有两个输入信号 CLK和 GATE,一个输出信号 OUT.

• CLK时钟脉冲输入

• GATE 门控制信号输入

• OUT输出信号

Page 16: 第九章  Intel 8253 定时器 / 计数器

qiu 16 qiu 16 qiu 16 qiu

第 9 章第 9 章• 每个计数器内部都有三个 16位寄存器 CR,CE和 OL 。

• CR预置初始值寄存器 存放 CPU 写入的计数初值 (也称时间常数 )。 CPU 可以

写,但不能读 CR 寄存器。 CPU 向 CR 写入计数初值后的第一个 CLK脉冲下降沿, CR 寄存器的内容被送到 CE计数器单元内,随后 CE开始工作。

• CE计数执行部件(可预置数减法计数器) 接收 CR送来的计数初值,在 GATE的控制下, CLK进行

减 1 计数,当计数终到时减 1 到 0 ,该计数通道的 OUT 引脚发出 OUT信号。 CPU 不能访问 CE寄存器。

• OL 输出锁存器 用来锁存某一时刻 CE中的计数值。 CPU 可随时用 IN 指令读出该寄存器的当前计数值,但不能写该寄存器。

Page 17: 第九章  Intel 8253 定时器 / 计数器

qiu 17 qiu 17 qiu 17 qiu

第 9 章第 9 章

16 位当前计数值锁存器

16 位减一计数器

16 位计数初值寄存器

&CLK

GATE

OUT

MSBLSB

LSB MSB

(减 1 至 0时)

装入 / 读出初值

锁存后读出当前值

8253 内部各计数器的结构

Page 18: 第九章  Intel 8253 定时器 / 计数器

qiu 18 qiu 18 qiu 18 qiu

第 9 章第 9 章8253 输入信号与各功能的对应关系

CS RD WR A1 A0 功能 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 读出计数值

Page 19: 第九章  Intel 8253 定时器 / 计数器

qiu 19 qiu 19 qiu 19 qiu

第 9 章第 9 章

•初始化

1 )写入控制字 以选择器( 3个计数器之一),确定工作方式( 6种方式之一),指定计数器计数初值的长度和装入顺序以及计数值的码制( BCD 或二进制码)。

2 )按控制字要求写入计数初值

计数器初值计算: N=fCLK/fOUT

4. 8253 编程

Page 20: 第九章  Intel 8253 定时器 / 计数器

qiu 20 qiu 20 qiu 20 qiu

第 9 章第 9 章初始化程序流程

写控制字

写计数值低 8位

写计数值高 8位

*

非必须

Page 21: 第九章  Intel 8253 定时器 / 计数器

qiu 21 qiu 21 qiu 21 qiu

第 9 章第 9 章5 、 8253 的控制字格式:

数制

格式SC1 SC0 M2RW1 RW0 BCDM0M1

D7 D6 D5 D4 D3 D2 D1 D0

工作方式 000 方式 0

001 方式 1

*10 方式 2

*11 方式 3

100 方式 4

101 方式 5

00 计数器锁存命令

10 只读 / 写高八位

01 只读 / 写低八位

11 先读 / 写低八位

再读 / 写高八位

00 选择计数器 0

01 选择计数器 1

10 选择计数器 2

读 / 写格式

计数器选择

0- 二进制

1-BCD 码

控制字写入控制字 I/O 地址( A1A0 = 11 )

Page 22: 第九章  Intel 8253 定时器 / 计数器

qiu 22 qiu 22 qiu 22 qiu

第 9 章第 9 章 关于控制字的说明:

1 、 8253只有一个工作方式控制字,但是对每个计数器而言,它们的工作方式控制字内容一定各不相同(前两位不同),所用各计数器的控制字需要分别设置,先后不计。

2 、 8253 的工作方式控制字的特殊形式可用于对计数器的当前计数值进行锁存

3 、在工作方式控制字被设置之后,随后必须紧接着给计数器预设置计数初值,计数器方可开始工作。

Page 23: 第九章  Intel 8253 定时器 / 计数器

qiu 23 qiu 23 qiu 23 qiu

第 9 章第 9 章

00 计数器锁存命令00 选择计数器

0

01 选择计数器 1

10 选择计数器2

计数器选择

未用

锁存计数器当前计数值控制字

SC1 SC0 M2RW1 RW0 BCDM0M1

D7 D6 D5 D4 D3 D2 D1 D0

Page 24: 第九章  Intel 8253 定时器 / 计数器

qiu 24 qiu 24 qiu 24 qiu

第 9 章第 9 章例 1 :选择 2 号计数器,工作在方式 3 ,计数初值为 533H( 2 个字节),采用二进制计数。其初始化程序段为

MOV DX , 307H ;命令口 MOV AL , 10110110B ; 2 号计数器的初始化命 令字 OUT DX , AL ;写入命令寄存器 MOV DX , 306H ; 2 号计数器数据口 MOV AX , 533H ;计数初值 OUT DX , AL ; 选送低字节到 2 号计数器 MOV AL , AH ; 取高字节送 AL

OUT DX , AL ; 后送高字节到 2 号计数器

Page 25: 第九章  Intel 8253 定时器 / 计数器

qiu 25 qiu 25 qiu 25 qiu

第 9 章第 9 章

例 3 :设三个计数器的端口地址为 70H 、 71H 、 72H ,控制寄存器端口地址 73H 。计数器 1 ,工作模式 1 ,使用 16 位,初值为1234H ,计数值使用 BCD

MOV AL, ?OUT 73H, ALMOV AX, 1234H

OUT ? , ALMOV AL, AH

OUT ? , AL

例 2 :设三个计数器的端口地址为 70H 、 71H 、 72H ,控制寄存器端口地址 73H 。计数器 0 ,工作模式 2 ,仅使用低 8 位,初值为 100 ,计数值使用二进制

MOV AL, ?OUT 73H, ALMOV AL, 100OUT 70H, AL

14H/1CH

73H

71H

71H

Page 26: 第九章  Intel 8253 定时器 / 计数器

qiu 26 qiu 26 qiu 26 qiu

第 9 章第 9 章• 读操作

1 )发出锁存命令,使当前计数值锁存在 OL 中2 )读 OL ,获得当前计数值

例 1 :设三个计数器的 CR/OL 端口地址为 70H 、 71H 、 72H ,控制寄存器端口地址 73H 。读出计数器 0的当前计数值,放在 BX 中

MOV AL, 0HOUT 73H, ALIN AL, 70HMOV BL, ALIN AL, 70HMOV BH, AL

Page 27: 第九章  Intel 8253 定时器 / 计数器

qiu 27 qiu 27 qiu 27 qiu

第 9 章第 9 章

例 2 :要求读出并检查 1 号计数器的当前计数值是否是全“ 1”(假定计数值只有低 8 位),其程序段为 MOV DX,307H ;命令口L : MOV AL , 01000000B ; 1 号计数器的锁存命令 OUT DX , AL ;写入命令寄存器 MOV DX , 305H ; 1 号计数器数据口 IN AL , DX ;读 1 号计数器的当前计数值 CMP AL , 0FFH ;比较 JNE L ;非全“ 1” ,再读 HLT ; 是全“ 1” ,暂停

Page 28: 第九章  Intel 8253 定时器 / 计数器

qiu 28 qiu 28 qiu 28 qiu

第 9 章第 9 章

• 写操作

• 写命令字 A1A0="11" • 写计数值,对各计数器口地址 • 设置初值命令用来给出计数的初始值,初值可为 8 位,也

可为 16 位。如为 16 位,则要用两条输出指令完成初值设置。

Page 29: 第九章  Intel 8253 定时器 / 计数器

qiu 29 qiu 29 qiu 29 qiu

第 9 章第 9 章 5. 8253 工作模式 8253 作为一个可编程计数器 / 定时器,可以用 6 种工作模式,

不论工作在那种模式,都会遵守下面几条基本规则:

1) 控制字写入寄存器时,所有控制逻辑电路立即复位,输出 端 OUT 进入初始状态。

2) 初值写入后,要经过一个时钟上升沿和一个下降沿,计数 执行部件才开始进行计数。

3) 通常在时钟脉冲 CLK 的上升沿时,门控信号 GATE 被采样。 模式 0 , 4 中,门控信号为电平触发 模式 1 , 5 中,门控信号为上升沿触发 模式 2 , 3 中,门控信号为电平或上升沿触发 4) 在时钟脉冲的下降沿,计数器作减 1 计数。 0 是计数器所能容纳的最大初始值。 二进制时, 0 相当于 2^16 ; BCD 码时, 0 相当于 10^4 。

Page 30: 第九章  Intel 8253 定时器 / 计数器

qiu 30 qiu 30 qiu 30 qiu

第 9 章第 9 章 1 、方式 0—— 计数结束中断 “一次有效”

1 )计数器写入控制字后,在 WR 的上升沿相应的输出信号 OUT 就开始变成低电平。当计数器减到零时, OUT 立即输出高电平。

2 )写入计数初值后,必须在下一个时钟脉冲下降沿到来时,才开始计数。门控信号 GATE 为高电平时,计数器工作;为低电平时,计数器停止工作,计数值保持不变。

3 )在计数器工作期间,如果重新写入新的计数值,

计数器将按新写入的计数值重新工作。

Page 31: 第九章  Intel 8253 定时器 / 计数器

qiu 31 qiu 31 qiu 31 qiu

第 9 章第 9 章

8253 的 0方式时序波形

n=3

CLK

OUT

WR

3 2 1

0

GATE

WR

GATEOUT

2 2 1 023

n=3

WR

OUT

9

n=3

8 3 1 0

n=9

GATE2

Page 32: 第九章  Intel 8253 定时器 / 计数器

qiu 32 qiu 32 qiu 32 qiu

第 9 章第 9 章

2. 方式 1 ---- 低电平输出( GATE 信号上升沿重新计数) 方式 1 为可重复触发的单稳态触发器。 情况一: ( 1 )写入控制字后,使输出 OUT 变成高电平; ( 2 )写入计数初值后,计数器并不立即开始工作。门控信号 GATE 有效的下一个输入时钟脉冲的下降沿,才开始计数; ( 3 )直到计数器值减到零后,输出才变高电平。见图①。 情况二: 在计数器工作期间,当 GATE又出现一个上升沿时,计数器重新 装入原计数初值并重新开始计数,见图②。 如果工作期间对计数器写入新的计数初值,则要等到当前的 计数值计满回零且门控信号再次出现上升沿后,才按新写入的计数 初值开始工作,见③。

Page 33: 第九章  Intel 8253 定时器 / 计数器

qiu 33 qiu 33 qiu 33 qiu

第 9 章第 9 章

8253 的方式 1 时序波形

n=3

CLK

OUT

WR

3 2 1

0

GATE

WR

GATEOUT

1 3 2 123

n=3

0

WR

OUT

2

n=3

1 0 3 2 1

n=2

GATE

Page 34: 第九章  Intel 8253 定时器 / 计数器

qiu 34 qiu 34 qiu 34 qiu

第 9 章第 9 章

3. 方式 2 :分频器 方式 2 是一种具有自动装入时间常数(计数初值N) 的 N分频器。特点:1 )写入控制字后,使输出 OUT 变成高电平;2 )一次设置计数初值,计数器可自动重复进行减“ 1” 计数操 作,减“ 1” 计数回“ 0” ,可从输出端输出一负脉冲信号。

Page 35: 第九章  Intel 8253 定时器 / 计数器

qiu 35 qiu 35 qiu 35 qiu

第 9 章第 9 章n=3

CLK

OUT

WR

3 2 1

GATE

3 2 1

WR

GATEOUT

2 3 2 123

n=3

3

WR

OUT

3

n=4

2 4 3 2 1

n=3

GATE1

8253 的方式 2 时序波形

Page 36: 第九章  Intel 8253 定时器 / 计数器

qiu 36 qiu 36 qiu 36 qiu

第 9 章第 9 章

4. 方式 3 ---- 方波发生器 方式 3 工作方式与方式 2 基本相同,也具有自动装入时间常数(计数 初值)的功能,不同之处在于:

( 1 )工作在方式 3 ,引脚 OUT 输出的不是一个时钟周期的负脉 冲,而是占空比为 1 : 1 或近似 1 : 1 的方波;当计数初值为偶数时 输出在前一半的计数过程中为高电平,在后一半的计数过程中为 低电平。 ( 2 )由于方式 3 输出的波形是方波,并且具有自动重装计数初 值的功能,因此, 8253 一旦计数开始,就会在输出端 OUT 输出连 续不断的方波。

Page 37: 第九章  Intel 8253 定时器 / 计数器

qiu 37 qiu 37 qiu 37 qiu

第 9 章第 9 章n=4

CLK

OUT

WR

4 2 4

GATE

2 4 2

WR

OUT

4 2 4 2 4 2

n=5

GATE0

8253 的方式 3 时序波形

WR

GATEOUT

4 2 2 424

n=4

2

Page 38: 第九章  Intel 8253 定时器 / 计数器

qiu 38 qiu 38 qiu 38 qiu

第 9 章第 9 章 5. 方式 4 -----软件触发的选通信号发生器

方式 4 工作方式是一种由软件启动的计数方式,产生一个负脉冲作为选通信号。

1 )即由写入计数初值来触发计数器开始工作 2 )门控信 GATE =1 ,允许计数器工作, GATE=0 , 禁止计数器工作 3 )在计数器工作期间,如果重新写入新的计数值,

计数器将按新写入的计数值重新工作。

Page 39: 第九章  Intel 8253 定时器 / 计数器

qiu 39 qiu 39 qiu 39 qiu

第 9 章第 9 章

n=3

CLK

OUT

WR

3 2 1

GATE

0

8253 的方式 4 时序波形

WR

GATEOUT

2 1 03

n=3

WR

OUT

3 2 1 0

n=3

GATE2

n=2

Page 40: 第九章  Intel 8253 定时器 / 计数器

qiu 40 qiu 40 qiu 40 qiu

第 9 章第 9 章 6. 方式 5 ------硬件触发选通信号发生器 方式 5 工作特点是由 GATE 上升沿触发计数器开始工作。

① 在 5 方式工作方式下,当写入计数初值后,计数器并不 立即开始计数,而要由门控信号的上升沿启动计数。

②在计数过程中(或者计数结束后),如果门控再次出现上升沿,计数器将从原装入的计数初值重新计数。

Page 41: 第九章  Intel 8253 定时器 / 计数器

qiu 41 qiu 41 qiu 41 qiu

第 9 章第 9 章

8253 的方式 5 时序波形

WR

GATEOUT

3 2 123

n=3

0

WR

OUT

2

n=3

1 0 3 2 1

n=2

GATE

n=3

CLK

OUT

WR

3 2 1

0

GATE

3

Page 42: 第九章  Intel 8253 定时器 / 计数器

qiu 42 qiu 42 qiu 42 qiu

第 9 章第 9 章工作模式决定以下内容:

1 )门控信号的影响高电平允许,当 GATE=0 ,即使出现 CLK ,也不计数—— 模式 0 , 2 , 3 , 4上升沿允许(上升沿触发)—— 模式 1 , 5

2 ) OUT 信号的状态写入控制字后, OUT 的状态计数过程中, OUT 的状态计数终了, OUT 的状态

3 )计数操作可否重复不可重复——模式 0 , 4自动重复——模式 2 , 3条件重复——模式 1 , 5

Page 43: 第九章  Intel 8253 定时器 / 计数器

qiu 43 qiu 43 qiu 43 qiu

第 9 章第 9 章

6 种工作模式主要区别:方式 0 :

计数初值写入 CR 后, OUT由 0 到 1跳变出现在 n+1个时钟脉冲之后延迟时间 TD=(n+1)TCLK

方式 1 :单脉冲宽度 T=n TCLK

方式 2 :对输入端 n 个时钟脉冲,在输出端仅出现一个时钟脉冲——N 分频计数器

Page 44: 第九章  Intel 8253 定时器 / 计数器

qiu 44 qiu 44 qiu 44 qiu

第 9 章第 9 章

方式 3 :例:计数器工作模式 3 ,计数器初值 15 ,时钟脉冲频率为 2MHz ,确定 OUT 端输出方波的特性。解: TCLK=1/2MHz=500ns

计数器初值 15 为奇数,输出分频波高电平宽度

TCLK(N+1)/2=4s输出分频波低电平宽度 TCLK(N-1)/2=3.5s

方式 4 、 5 :触发后 n+1 个时钟脉冲之后输出端产生选通脉冲信号

Page 45: 第九章  Intel 8253 定时器 / 计数器

qiu 45 qiu 45 qiu 45 qiu

第 9 章第 9 章方式 0 方式 1 方式 2 方式 3 方式 4 方式 5

功能 计数结束输出正跃变信号

单脉冲发生器 频率发生器 方波发生器 单脉冲发生

器单脉冲发生器

启动方式 “软件”启动 “硬件”启动

“软件”启动 “软件”启动 “软件”

启动“硬件”启动

输出波形写入初值后,经过 N+1 个 CLK 输出为高

宽度为 N 个CLK周期的负脉冲

宽度为 1 个 CLK周期的负脉冲

N 为偶数,正脉冲宽均为 N个 CLK周期;奇数时,正脉冲宽为 (N+1)/2CLK周期,负脉冲 (N-1)/2CLK周期

宽度为 1 个CLK周期的负脉冲

宽度为 1 个CLK周期的负脉冲

初值重装 —— —— 初值自动重装 初值自动重装 —— ——

计数过程中改变计数初值 立即有效 外部触发后

有效计数到 1 后有效

外部触发有效 /计数结束后有效

立即有效 外部触发后有效

GATE信号的作用

GATE=0

停止计数 —— 停止计数 停止计数 停止计数 ——

上升沿 —— 启动计数 启动计数 启动计数 —— 启动计数

GATE=1

允许计数 —— 允许计数 允许计数 允许计数 ——

Page 46: 第九章  Intel 8253 定时器 / 计数器

qiu 46 qiu 46 qiu 46 qiu

第 9 章第 9 章

四、 8253 的应用

例 1 :计数器 0 工作模式 4 ,初始化计数器,使装入计数器 10 s后产生选通信号 ( 设时钟频率 2MHz,8253 端口地址为 50H~53H) 。

解: n+1=T/ TCLK=10/0.5=20

n=19=13H

MOV AL, 18H

OUT 53H, AL

MOV AL, 13H

OUT 50H, AL

Page 47: 第九章  Intel 8253 定时器 / 计数器

qiu 47 qiu 47 qiu 47 qiu

第 9 章第 9 章例 2 :

• 采用 8253 作定时 / 计数器,其接口地址为 012

0H~0123H 。• 要求计数器 0 每 10ms 输出一个 CLK 脉冲宽的负脉冲;用计数器 1产生 10KHz 的连续方波信号,计数器 2 在定时 5ms 后产生输出高电平。输入 8253 的时钟频率为 2MHz 。

• 画线路连接图,并编写初始化程序。

Page 48: 第九章  Intel 8253 定时器 / 计数器

qiu 48 qiu 48 qiu 48 qiu

第 9 章第 9 章

• 计算计数初值: CNT0 : 10ms/0.5us=20000

CNT1 : 2 MHz/10KHz=200

CNT2 : 5ms/0.5us=10000

• 确定控制字: CNT0 :方式 2 , 16 位计数值 CNT1 :方式 3 ,低 8 位计数值 CNT2 :方式 0 , 16 位计数值

Page 49: 第九章  Intel 8253 定时器 / 计数器

qiu 49 qiu 49 qiu 49 qiu

第 9 章第 9 章

CLK0

GATE0

OUT1

D0~D7

WR

RD

A1

A0

CS

DB

IOW

IOR

A1

A0

译码器

8253

CLK2

GATE1

GATE2

+5V

CLK1

2MHz

OUT0

OUT2

Page 50: 第九章  Intel 8253 定时器 / 计数器

qiu 50 qiu 50 qiu 50 qiu

第 9 章第 9 章初始化程序

CNT0 :MOV DX , 0123H

MOV AL , 34H

OUT DX , AL

MOV DX , 0120H

MOV AX , 20000

OUT DX , AL

MOV AL , AH

OUT DX , AL

CNT1 : ……

CNT2 : ……

Page 51: 第九章  Intel 8253 定时器 / 计数器

qiu 51 qiu 51 qiu 51 qiu

第 9 章第 9 章

例 3.

以 2MHz 输入 8253 ,实现每 5秒定时中断(设 8253 端口地址 40H~43H )

分析: 8253 最大初值 65536 , CLK=2MHz 可实现最大时间间隔

65536/(2106)=32.769ms

所以需要两个计数器串联,一个计数器的输出作为另一个计数器的输入

Page 52: 第九章  Intel 8253 定时器 / 计数器

qiu 52 qiu 52 qiu 52 qiu

第 9 章第 9 章计数器 1 :模式 2 , OUT1每 5ms 输出一个脉冲

初值 (2106)/(1/0.005)=10000

计数器 0 :模式 2 , OUT0每 5s 输出一个脉冲

初值 (1/0.005)/(1/5)=1000

OUT0GATE0

CLK0

OUT1GATE1

CLK1

+5V

+5V2MHz

每 5秒产生一个脉冲

Page 53: 第九章  Intel 8253 定时器 / 计数器

qiu 53 qiu 53 qiu 53 qiu

第 9 章第 9 章

程序: MOV AL, 74HOUT 43H, ALMOV AX, 10000OUT 41H, ALMOV AL, AHOUT 41H, ALMOV AL, 74H

MOV AL, 34HOUT 43H, ALMOV AX, 1000OUT 40H, ALMOV AL, AHOUT 40H, AL

Page 54: 第九章  Intel 8253 定时器 / 计数器

qiu 54 qiu 54 qiu 54 qiu

第 9 章第 9 章8253 在 IBM PC系列机上的应用

A0

A1

——— A0

— A1

D0~ D7 D0~ D7 OUT1

OUT2

OUT0

GATE0

GATE1

GATE2

CLK0

CLK1

CLK2

D Q

CLK

+5V

接至 DMA 控制器

接至扬声器驱动器PB0

PB1

IRQ0

DRQ0

8253 +5V

1.19318MHzDACK0 BRD

IOR

IOWRDWR

CST/CCS

Page 55: 第九章  Intel 8253 定时器 / 计数器

qiu 55 qiu 55 qiu 55 qiu

第 9 章第 9 章

计数器 0 :定时中断

• 计数器 0 :方式 3 ,计数值: 65536 ,输出频率为 1.19318MHz÷65536 = 18.206Hz 的方波

• 门控为常启状态,这个方波信号不断产生• OUT0 端接 8259A 的 IRQ0 ,用作中断请求信

号• 每秒产生 18.206 次中断请求,或说每隔 55ms

( 54.925493ms )申请一次中断• DOS系统利用计数器 0 的这个特点,通过 08 号

中断服务程序实现了日时钟计时功能

Page 56: 第九章  Intel 8253 定时器 / 计数器

qiu 56 qiu 56 qiu 56 qiu

第 9 章第 9 章计数器 1 :定时刷新

需要重复不断提出刷新请求

2ms 内刷新 128 次,即 15.6s刷新一次

门控总为高,选择方式 2 或3

计数初值为 18

Page 57: 第九章  Intel 8253 定时器 / 计数器

qiu 57 qiu 57 qiu 57 qiu

第 9 章第 9 章

计数器 2 :扬声器控制• 计数器 2 的输出控制扬声器的发声音调• 计数器 2 只能工作在方式 3 ,才能输出一

定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声

• 扬声器还受控于并行接口( 8255 芯片)• 必须使 PB0 和 PB1同时为高电平,扬声

器才能发出预先设定频率的声音

Page 58: 第九章  Intel 8253 定时器 / 计数器

qiu 58 qiu 58 qiu 58 qiu

第 9 章第 9 章

第 9章教学要求

8253 的引脚和 6 种工作方式(重点方式 2 , 3 ) 8253 的编程 8253 在 IBM PC系列机上的应用