55
9.1 定定 / 定定定定定定定 9.2 8253 定定定定定 9.3 8253 定定定定定 定9定 定定定定定 / 定定定 8253 定定定定

第 9 章 可编程定时 / 计数器 8253 及其应用

Embed Size (px)

DESCRIPTION

第 9 章 可编程定时 / 计数器 8253 及其应用. 9.1 定时 / 计数的基本概念 9.2 8253 的工作原理 9.3 8253 的应用举例. 9.1 定时 / 计数的基本概念. 所谓定时(计数)就是通过硬件或软件的方法产生一个时间基准,以此来实现对系统的定时或延时控制。 实现定时或延时有三种主要方法: 软件定时 纯硬件定时 可编程的硬件定时器 / 计数器. 1. 软件定时 方法: 由于执行每条指令都需要时间,故可循环执行某一段指令产生延迟时间。 特点: - PowerPoint PPT Presentation

Citation preview

9.1 定时 / 计数的基本概念

9.2 8253 的工作原理

9.3 8253 的应用举例

第 9 章 可编程定时 / 计数器 8253 及其应用

所谓定时(计数)就是通过硬件或软件的方法产生一个时间基准,以此来实现对系统的定时或延时控制。

实现定时或延时有三种主要方法:

软件定时

纯硬件定时

可编程的硬件定时器 /计数器

9.1 定时 / 计数的基本概念

1. 软件定时

方法:

由于执行每条指令都需要时间,故可循环执行某一段指令产生延迟时间。

特点:

这种方法由于要完全占用 CPU 的时间,因而降低了 CPU 的利用率,但硬件开销少,使用灵活。

例:某一 LED 灯控系统,要求控制 LED 灯亮 0.5s 后熄灭。选择软件定时法,控制程序段如下:

SUB CX,CXMOV AL,01H ; 灯亮控制码OUT PORT,AL ; PORT 为端口地址

L: LOOP L ;循环 216 次,约 0.5 秒MOV AL,00H ;灯灭控制码OUT PORT,AL

LOOP 指令执行占 17个时钟周期,设时钟 =2MHz, 时钟周期 =0.5us, 0.5us*17* 216= 0.5s 。

2. 纯硬件定时

方法:

采用固定的电路,如可以采用小规模集成电路 555 ,外接电阻和电容构成单稳延时电路。

特点:

定时电路简单,而且通过改变电阻和电容,可以使定时在一定的范围内调整。

但使用不灵活。

3. 可编程硬件定时器 /计数器

是目前在控制系统中广泛使用的方法,它通过编程来控制电路的定时值及定时范围。

在计算机系统中,象定时中断、定时检测、定时扫描等等都是用可编程定时器来完成定时控制的。

特点:

功能强,使用灵活,定时时间精确(由软件设置),提高CPU 的利用率。

Intel 系列的 8253 、 8254 就是常用的可编程定时 / 计数器。

8253 的主要性能:

* 具有 3 个独立的 16 位计数器通道;* 每个计数器均可按二进制或二—十进制计数;* 每个计数器的计数速率高达 2MHz ( 8254 为 10MHZ ) ;* 每个通道有 6 种工作方式,可由程序设置和改变;* 所有的输入输出都与 TTL 兼容。

可用在多种场合,如方波发生器、分频器、实时时钟、事件计数等方面。

一、 8253 的内部结构和引脚信号内部结构 ⑴ 数据总线缓冲器 它与 CPU 的数据总线相连,是 8 位双向三态缓冲器。 CPU通过这个缓冲器对 8253 进行读 / 写操作。 ⑵ 读 / 写控制逻辑 有 CS 、 RD 、 WR 、 A0 、 A1 信号。 ⑶ 控制字寄存器 只能写入 , 初始化时由 CPU 写入控制字来设置计数器的工作方式。 ⑷ 计数器 3 个独立的结构相同的 16 位减法器,可作定时 / 计数器使用;计数器可按二进制 /BCD 方式减法计数,从预置值减到零时,OUT 端输出一信号。

9.2 Intel8253 的工作原理

图 9.1 Intel 8253 的内部结构

Êý¾Ý×ÜÏß»º³åÆ÷

¶Á/дÂß¼

¿ØÖÆ×ּĴæÆ÷

¼ÆÊýÆ÷0

¼ÆÊýÆ÷1

¼ÆÊýÆ÷2

RDWR

CS

A0A1

CLK0

GATE0OUT0

CLK1GATE1OUT1

CLK2GATE2OUT2

D7¡«D0

图 9.2 Intel 8253 的外部引脚图

D 7

D 6

D 5

D 4

D 3

D 2

D 1

D 0

CLK 0

OUT 0

GATE 0

GND OUT 1

GATE 1

CLK 1

GATE 2

CLK 2

A 0

A 1

OUT 2

WR

RD

CS

V CC

8253

24

23

22

21

20

19

18

17

16

15

14

13

1

2

3

4

5

6

7

8

9

10

11

12

外部引脚

GATE :门控信号,当 GATE 为低电平时,禁止计数器工

作; GATE 为高电平时,才允许计数器工作。

CLK :计数脉冲输入。

OUT :脉冲输出。当计数到“ 0” 时,从 OUT 端输出信号,

输出信号的波形取决于工作方式。

CS 、 RD 、 WR 、 A0 、 A1 共同结合,用于对 8253 进行端

口操作,如表 9-1 所示。

表 9-1 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

0 0 1 1 1 无操作 ( 三态 )

1 × × × × 禁止 ( 三态 )

0 1 1 × × 无操作 ( 三态 )

图 9.3 8253 的控制字

M2 M1 M0 BCDRL0RL1SC0SC1

D7 D6 D5 D4 D3 D2 D1 D0

( 计数器选择 ) 00 :选择计数器 0 01 :选择计数器 1 10 :选择计数器 2 11 :非法选择

( 读 / 写格式 ) 00 :计数器锁存命令

01 :读 / 写高 8 位 10 :读 / 写低 8 位

11 :先读 / 写低 8 位,再读 / 写高 8 位

( 数制选择 ) 0 :二进制 (0000~FFFFH) 1 : BCD (0000~9999H)

( 工作方式选择 ) 000 : 方式 0 001 : 方式 0 X10 :方式 2 X11 :方式 3 100 :方式 4 101 : 方式 5

二、 8253 的控制字

SC1 、 SC0 :这两位决定这个控制字是哪一个计数器的控制字。

RL1 、 RL0 :设置数据读 / 写格式。在读取计数值时,可令 RL1 、

RL0=00 ,先将写控制字时的计数值锁存,然后再读取。

M2 、 M1 、 M0 :设置每个计数器的工作方式。

BCD :用于选择每个计数器的计数制。在二进制计数时,计数初值的范围是 0000H ~ FFFFH ,其中 0000H 是最大值,代表 65536 。在 BCD 码计数时,计数初值的范围中 0000 ~ 9999H ,其中, 0000 是最大值,代表 10000 。

Intel 8253 的每个计数器都有 6 种工作方式。

6 种方式的主要区别是:输出的波形不同,计数过程中 GATE

信号对计数操作的影响不同,启动计数器的触发方式不同等。

1. 方式 0— 计数结束中断方式

该方式的波形如图 9.4 所示,这种方式的特点是:

三、 8253 的工作方式

* CW 写入, OUT=0 ;* 写入时常,通道开始计数;* 计数到零, OUT=1 ;

* 计数器只计数一遍;* OUT 是 N+1 个 CLK 后变高;* 计数过程中, GATE=0 , 计数暂停;* 计数过程中可改变计数值;* 可用 OUT 信号作为中断请求。

图 9.4 方式 0 波形图

4 3 2 1 0 FF

OUT

GATE=1

CLK

WR

CW=10 LSB=4

3 2 2 2 0 FF

OUT

GATE

CLK

WR

CW=10 LSB=3

1 ÖÃʱ³£

方式 0 计数过程中改变计数初值

GATE

WR

CLK

OUT

CW = 10 HN = 3 N = 2

3 2 1 2 1 0

方式 0 特点:

①写入控制字后, OUT 输出端变为低电平。当写入计数初值后,计数器开始减 1 计数(相当于软件触发启动) 。直到计数到 0 时, OUT 输出变为高电平。期间共记录 n+1 个脉冲,即 :

Tout > n • TCLK (该方式作定时用时不够准确)

但此信号可用于向 CPU 发出中断请求。

②计数器只计数一遍。当计数到 0 时,不恢复计数初值,不

开始重新计数,且输出一直保持为高电平。只有在写入新的计

数值时, OUT 才变低,并开始新的计数。

③GATE 是门控信号, GATE=1 时允许计数, GATE=0 时,

禁止计数。在计数过程中,如果 GATE=0则计数暂停,当 GAT

E=1 后接着计数。

④在计数过程中可改变计数值。

* 写入控制字 OUT=1 ,写入常数不计数;* GATE上升沿启动计数, OUT=0 ,硬件触发;* 计数到, OUT=1 。

*单拍脉冲宽度为 N ;* 由 GATE重新启动;* 计数中,可重新启动;* 计数中,可改变计数值,再次启动时有效。

二. 8253-PIT的工作方式

3 2 30 FF

OUT

GATE

CLK

WR

CW=12 LSB=3

1

二. 8253-PIT的工作方式

3 2 3 0OUT

GATE

CLK

WR

CW=12 LSB=3

1 2 1

图 9.5 方式 1 的波形图

2. 方式 1— 可编程单稳态输出方式

方式 1 特点:

①写入控制字后,输出 OUT 将保持为高电平,计数由 GATE上升沿触发启动(相当于硬件触发启动)。 GATE 启动之后,OUT 变为低电平,当计数到 0 时, OUT 输出高电平,从而在OUT 端输出一个负脉冲,负脉冲的宽度为 n 个 (计数初值 )CL

K 的脉冲宽度。 Tout = n • TCLK (定时准确)

②当计数到 0 后,不用送计数值,可再次由 GATE 脉冲启动 ,

输出同样宽度的负的单脉冲。

③在计数过程中,可改变计数初值,此时计数过程不受影

响。如果再次触发启动,则计数器将按新输入的计数值计数。

④在计数未到 0 时,如果 GATE 再次启动,则计数初值将重

新装入计数器,并重新开始计数。

3 2

OUT

GATE

CLK

WR

CW=14 LSB=3

3 2 1 32

图 9.6 方式 2 波形图

* 写入控制字 OUT=1 ;* 写入常数立即对 CLK 计数;* 计数到 1 , OUT=0 ;* 一个 CLK周期后, OUT=1 ,重新计数。

* 通道连续工作不需重置时间常数;* 计数过程中, GATE=0 ,计数暂停, GATE 变高后重新计数;* 计数过程中可改变计数值;新的计数值在下一次有效。

3 2 1

OUT

GATE=1

CLK

WR

CW=14 LSB=3

3 2 1 3

3. 方式 2——比率发生器(分频器)

方式 2 的特点是:

①写入控制字后,输出将变为高电平。写入计数值后,计数立即开始。在计数过程中输出始终为高电平,直至计数器减到1 时,输出将变为低电平。经过一个 CLK周期,输出恢复为高,且计数器开始重新计数。因此,它能够连续工作,输出固定频率的脉冲。

②如果计数值为 N,则每输入 N个 CLK 脉冲,输出一个脉冲。因此,相当于对输入脉冲的 N分频。通过对 N赋不同的初值,即可在输出端得到所需的频率,起到频率发生器的作用。

③计数过程可由门控脉冲控制。 GATE=1 允许计数,当 GATE=0 时,暂停计数;当 GATE 变高自动恢复计数初值,重新开始计数。

④在计数过程中可以改变计数值,这对正在进行的计数过程没有影响。但在计数到 1 时输出变低,经过一个 CLK周期后输出又变高,计数器将按新的计数值计数。

方式 3 的波形如图 9.7所示。它的特点是:

①输出为周期性的方波。若计数值为 N,则输出方波的周期是 N个 CLK 脉冲的宽度。

图 9.7 方式 3 波形

WR

CLK

GATE

OUT

CW£½16 N£½4

4 2 4 2 4 2 4

4. 方式 3 — 方波发生器

②与方式 2 的区别在于:输出为周期是 N个 CLK 脉冲的方波。

③若计数值为偶数,则输出对称方波。每个 CLK 使计数值减2 ,计到 0 , OUT 改变状态,重装计数值开始新的计数。如果计数值为奇数,则前 (N+1)/2 个 CLK 脉冲期间输出为高电平,后 (N-1)/2 个 CLK 脉冲期间输出为低电平。

④GATE 信号能使计数过程重新开始。 GATE=1 允许计数,GATE=0 禁止计数。停止后 OUT 将立即变高开,当 GATE 再次变高以后,计数器将重新装入计数初值,重新开始计数。

方式 4 的波形如图 9.8 所示,这种方式的特点是:

①写入控制字后,输出为高电平。写入计数值后立即开始计数(相当于软件触发启动),当计数到 0 后,输出一个时钟周期的负脉冲,计数器停止计数。只有在输入新的计数值后,才能开始新的计数。

②当 GATE=1 时,允许计数,而 GATE=0 ,禁止计数。 GATE 信号不影响输出。

③在计数过程中,如果改变计数值,则按新计数值重新开始计数。如果计数值是 16 位,则在设置第一字节时停止计数,在设置第二字节后,按新计数值中开始计数。

5. 方式 4——软件触发选通

图 9.8 方式 4 波形

WR

CLK

GATE

OUT

CW£½18 N£½3

3 2 1 0

方式 5 的波形如图 9.9 所示,这种方式的特点是:

①写入控制字后,输出为高电平。在设置了计数值后,计数器并不立即开始计数,而是由门控脉冲的上升沿触发启动。当计数到 0 时,输出一个 CLK周期的负脉冲,并停止计数。当门控脉冲再次触发时才能再计数。

②在计数过程中如果再次用门控脉冲触发,则使计数器重新开始计数,此时输出还保持为高电平,直到计数为 0 ,才输出负脉冲。

③如果在计数过程中改变计数值,只要没有门控信号的触发,不影响计数过程。当有新的门控脉冲的触发时,不管是否计数到 0 ,都按新的计数值计数。

6. 方式 5——硬件触发选通

图 9.9 方式 5 波形

WR

CLK

GATE

OUT

CW£½1A N£½3

3 2 1 0

1. 输出端 OUT 的初始状态 只有方式 0 是在写入控制字后输出为低,其它均为高;

2. 计数值的设置 任一种方式,只有在写入计数值后才能开始计数,方式 0 、 2 、 3 、 4 在写入计数值后,计数自动开始,方式 1 、 5需外部触发,才开始计数。

方式 0 、 1 、 4 初始化后仅有效一次。方式 2 、 3 、5会在计数器减为 0 时,自动将初值再装入。

四、 8253 工作方式小结

6 种方式各有特点,适用于不同的应用场合。方式 0 ,1 相似,方式 2 , 3 相似,方式 4 , 5 相似。

计数值 N 与输出波形的关系

方式 功能 N与输出波形的关系

0 计完最后一个数中断 写入计数值 N后,经过 N+1个 CLK脉冲输出变高

1 硬件再触发单拍脉冲 单拍负脉冲的宽度为 N个 CLK脉冲

2 速率发生器 N个 CLK脉冲,输出宽度为一个 CLK周期的负脉冲

3 方波速率发生器写入 N后,输出 N /2个 CLK高电平,N /2 个 CLK低电平(N

为偶数);(N+1)/2 个 CLK 高电平,(N-1)/2 个 CLK 低电平(N为奇数)

4 软件触发选通 写入 N后,过 N+1个 CLK,输出宽度为一个 CLK的负脉冲

5 硬件触发选通 门控触发后过 N+1个 CLK,输出宽度为一个 CLK的负脉冲

3. 门控信号的作用: GATE 输入总是在 CLK 输入时钟的上升沿被采样。在方式 0 , 2 , 3 , 4 中, GATE 输入是电平起作用。在方式 1 , 2 , 3 , 5 中 GATE 输入是上升沿起作用的。

GATE方式 功 能

低或变为低 上升沿 高

0 计完最后一个数中断 禁止计数 ___ 允许计数

1 硬件再触发单拍脉冲 -----①启动计数②下一个 CLK脉冲使输出变低

-----

2 速率发生器①禁止计数②立即使输出为高

①重新装入计数值②启动计数

允许计数

3 方波速率发生器①禁止计数②立即使输出为高

启动计数 允许计数

4 软件触发选通 禁止计数 ----- 允许计数5 硬件触发选通 ------ 启动计数 ------

8253 的初始化编程步骤

接通电源时 8253处于未定义状态,必须首先对其进行初始化,初始化步骤(分别对每个计数器进行):

①写控制字。

②写计数初值,如果计数值是 16 位的,则先写低 8 位再写高8 位。

9.3 8253 的应用举例

* 对 3 个通道的编程没有先后顺序的规定,只要符合先写入控制字,后写入计数初值的规定即可。

例:设一个 8253 在某系统中的端口地址 40H—43H ,如果要将计数器 0 设置为工作方式 3 ,计数初值为 3060H,采用二进制计数法,则初始化方法如下:

MOV AL , 36H ;设置控制字 00110110 (计数器 0 ,方式 3 ,写两个字节,二进制计数)OUT 43H , AL ;写入控制寄存器MOV AX,3060H ;设置计数值OUT 40H,AL ;写低 8 位至计数器 0MOV AL,AHOUT 40H,AL ;写高 8 位至计数器 0

例 1 :某 8253 端口地址为 F8H~FBH ,欲用通道 0以方式 1 ,按 BCD 计数,计数值为 5080 。

1.确定通道控制字;2. 计数值的低 8 位为 80 ;3. 计数值的高 8 位为 50 。

0 0 1 1 0 0 1 1

初始化程序为:MOV AL , 33H

OUT 0FBH , AL

MOV AL , 80H

OUT 0F8H , AL

MOV AL , 50H

OUT 0F8H , AL

在计数过程中, 8253 读计数器现行值的方法:(将计数值存入内部锁存器)

MOV AL , 03H ;计数器 0 的锁存命令OUT 0FBH , AL ;写入控制寄存器IN AL , 0F8H ;读低 8 位MOV CL , AL ;存入 CL 中IN AL , 0F8H ;读高 8 位MOV CH , AL ;存入 CH 中

8253 的应用举例

A4A3A0

A5M/IO

A7A6

A9A8

G1

G2B

G2A

CBA

Y4

A2A1RDWR

D7—D0

GATE0OUT0

CLK0CLK1CLK2

GATE1OUT1

GATE2OUT2

A1A0RDWR

D7—D0

CS

1MHz 方波

5V

2KHz 方波

1ms 的负脉冲

单脉冲

8086

CPU

74LS138

例 2 :用 8253产生各种定时波形。

例 2 :用 8253产生各种定时波形。

要求: ( 1 )通道 0 输出频率为 2KHz 的方波;

( 2 )通道 1产生宽度为 1ms 的负脉冲;

( 3 )通道 2以硬件方式触发,输出单脉冲时间常数为 26 。

已知: 8253 基地址为 310H , 3 通道所用时钟脉冲频率为 1MHz 。分析:通道 0 工作于方式 3 ,控制端 GATE0接 +5V ,时间常数 N0=1MHz/2KHz=500 ;

通道 1 工作于方式 1 ,由控制端 GATE1 的正跳变触发, OUT1 的宽度为时常,单次触发,时间常数 N1=1ms/0.001ms=1000 ;

通道 2 工作于方式 5 ,由控制端 GATE2 的正跳变触发,可连续触发,时间常数 N2=26 。

;通道 0 初始化程序MOV DX , 316HMOV AL , 00110111BOUT DX , ALMOV DX , 310H MOV AL , 00HOUT DX , ALMOV AL , 05HOUT DX , AL

;通道 1 初始化程序MOV DX , 316HMOV AL , 01110011BOUT DX , ALMOV DX , 312H MOV AL , 00HOUT DX , ALMOV AL , 10HOUT DX , AL

;通道 2 初始化程序MOV DX , 316HMOV AL , 10011011BOUT DX , ALMOV DX , 314H MOV AL , 26HOUT DX , AL

例 3 : 8253 控制 LED 。要求: LED 点亮 10秒,熄灭 10秒。分析: 8253 的地址线与 CPU 高 8 位数据线 D8——D15 相

连, 8253 的各端口的地址为 81H 、 83H 、 85H 、 87H 。 OUT1 输出占空比为 1:1 的方波,周期 20秒。 8253 端口 1 工作在方式 3 。 时钟频率为 2MHz 时, 16 位计数通道的最大定时时间为:

0 .5s65536=32.768ms

分频系数: 2MHz/0.05Hz

=40,000,000

级连:通道 0 输出 400Hz 脉冲(时常 5000 ),通道 1 输出 0.05Hz 方波(时常 8000 )。

D7-D0

WR

RD

A1

A0

CS

CLK0

OUT0

CLK1

OUT1 译码

WR

RD

A2

A1M/ IO

A0-A7

+5V

D8-D15

GATE0

GATE1

2MHz

;通道 0 初始化程序MOV AL , 00110101BOUT 87H , ALMOV AL , 00HOUT 81H , ALMOV AL , 50HOUT 81H , AL

;通道 1 初始化程序MOV AL , 01110111BOUT 87H , ALMOV AL , 00HOUT 83H , ALMOV AL , 80HOUT 83H , AL

因单通道最大分频系数为 65536 ,所以需用几个通道级连的方法来解决这个问题。通道 0 : CLK0 :接 2MHz 时钟信号,方式 2 , N0=5000 ;通道 1 : CLK1 :接 OUT0 ,方式 3 , N1=8000 ;

例 4 :用 8253 设计一个自动计数系统(计数 500 向 CPU提出中断申请)。

8253 端口地址: F0H , F2H , F4H , F6H ,8253 工作方式:计数器 1 工作于方式 0 ,按 BCD

计数,先读写低字节,后读写高字节。

D7-D0

OUT1

WR

RD

A1

A0

CS

GATE1

CLK1

译码

8259IR0

WR

RD

A2

A1M/IO

AB

+5V+5V +5V

;通道 1 初始化程序MOV AL , 01110001BOUT 0F6H , ALMOV AL , 99HOUT 0F2H , ALMOV AL , 04HOUT 0F2H , AL

;方法 2 读通道 1 计数值程序MOV AL , 01000000BOUT 0F6H , ALIN AL , 0F2HMOV AH , ALIN AL , 0F2HXCHG AH , AL

当前计数值的读取

( 1 )利用 GATE 控制信号,使计数器停止计数。故干扰了计数过程,需要硬件电路配合。

( 2 )利用计数器锁存命令锁存现行计数值,就可从相应的计数器通道中读取计数值。

8253 在 IBM PC/XT 机的应用

在 IBM PC/XT 机中, 8253 主要提供系统时钟中断、动态 RAM 的刷新定时及喇叭发声控制等功能。 8253 的初始化是在计算机启动时由 BIOS 完成的。

从 8284 时钟发生器来的频率 2.386364MHZ 经二分频后作为8253 三个计数器的时钟输入, 8253 在 IBM-PC/XT 中的端口地址为 40H—43H ,这三个计数器在系统中的初始化程序如下:

8253 在 IBM-PC/XT机的应用的示意图

CLK0

CLK1

CLK2

GATE 0

GATE 1

GATE 2

OUT0

OUT1

OUT2

INTIRO

Q

Q

&Â˲¨

&PB0

PB1

8255

£«5 V

1.193182 MHz8253 8259

£«5 V

8088 CPU

DMA ¿ØÖÆÆ÷

CP

⑴ 计数器 0 用于定时中断(约 55ms) OUT0(f=1.19318MHz/65536=18.2Hz 的方波 )经系统板上的IRQ0 送到 8259 的 IR0, 使计算机每秒钟产生 18.2 次的中断(即每隔 55ms 申请一次), CPU 可以此作为时间基准。如计65536 次中断就为 1小时。

MOV AL,36H ;计数器 0,方式 3,写两个字节,二进制计数OUT 43H,AL ;控制字送控制字寄存器MOV AL,0 ;计数值为最大值OUT 40H,AL ;写低 8位OUT 40H,AL ;写高 8位

⑵ 计数器 1 用于定时( 15μs) DMA 请求

8253 通道 1 和 8237 通道 0 构成刷新电路, 8253 通道 1 每隔 15us 请求一次 DMA读操作。f=1/15us=66666.67Hz,故分频系数 = 1193180Hz/66666.67Hz=18( 即初值 )

MOV AL,54H ;计数器 1,方式 2,只写低 8位,二进制计数OUT 43,ALMOV AL,12H ;初值为 18OUT 41H,AL

⑶ 计数器 2 用于产生约 900HZ 的方波送至扬声器

MOV AL,B6H ;计数器 2,方式 3,写两字节,二进制计数OUT 43,ALMOV AX,0533H ;计数初值为 533HOUT 42H,AL ;写低 8位MOV AL,AHOUT 42H,AL ;写高 8位

Intel8254 是 Intel 8253 的改进型,它们在操作方式及引脚排列上完全相同。

相比 8253 , 8254 主要改进的内容是:

1. 计数频率高

8254 的计数频率可由直流至 6MHz , 8254-2 可高达 10MHz 。而 8253 最高只能达到 2.6MHz 。

9.4 Intel 8254简介

2. 有读回命令 (写入至控制字寄存器 )

如果控制字寄存器 D7=1 , D6=1 , D0=0 ,即为 8254 的读回命令,其格式如图 9.12 所示。

这个命令可以使三个计数器的计数值一次锁存,而在 8253则需要写入三个命令。

图 9.12 8254 的读回命令

计数器 2 计数器 1 计数器 0 011

D7 D6 D5 D4 D3 D2 D1 D0

1 选择相应的计数器 0 锁存所选计数器的计数值

0 锁存所选计数器的状态

另外,在 8254 中每个计数器都有一个状态字,当要读取时,也可由读回命令进行锁存。其状态字的格式如图 9.13 所示。

图 9.13 8254 的状态字格式

M2 M1 M0 BCDRW0RW1OUTPUT

D7 D6 D5 D4 D3 D2 D1 D0

0 : OUT 引脚是低电平 1 : OUT 引脚是高电平

0 :计数值有效 1 :无效计数值

其中, D0~ D5与方式控制字对应位的意义相同。即为写入

此计数器的控制字的相应部分。 D7表示 OUT引脚的输出状态。

D6表示计数初值是否已装入减 1 计数器, D6=0表示已经装入,

可以读取计数器。

P324 习题

3 、 4

作业