26
第第第 第第第第第 / 第第第 8253 第第第 Intel8253-PIT 第第第第第 . 8253 第第第 第第第第 第第第第第第第第第第第第第 第第第第第 第第第 ,:、 第第第第第第 第第第第第第第第第第 、。 8253 第第第第第第第第第 / 第第第1. 第第第第 * 第第 3 第第第第 16 第第第第第第* 第第第第第第第第第第第第第—第第第第第* 第第第第第第第第第第第第 2MHz 第 * 第第第第第 6 第第第第第 第第第第第第第第第第 ,; * 第第第第第第第 第第 TTL 第第习习8 4 8 5

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

  • Upload
    gannon

  • View
    84

  • Download
    1

Embed Size (px)

DESCRIPTION

第八章 可编程定时 / 计数器 8253 及其应用. 第一节 Intel8253-PIT 的工作原理. 一 . 8253 的功能. 习题: 8 - 4 , 8 - 5. 计算机系统中,实现定时或延时有三种方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。 8253 为可编程的硬件定时 / 计数器。. 1. 主要功能 * 具有 3 个独立的 16 位计数器通道; * 每个计数器均可按二进制或二 — 十进制计数; * 每个计数器的计数速率高达 2MHz ; * 每个通道有 6 种工作方式,可由程序设置和改变;* 所有的输入输出都与 TTL 兼容。. - PowerPoint PPT Presentation

Citation preview

Page 1: 第八章  可编程定时 / 计数器 8253 及其应用

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

第一节 Intel8253-PIT 的工作原理一 . 8253 的功能

计算机系统中,实现定时或延时有三种方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。8253 为可编程的硬件定时 / 计数器。

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

习题: 8- 4, 8-5

Page 2: 第八章  可编程定时 / 计数器 8253 及其应用

二 . 8253 的内部结构

* 三个计数器(减法器) 3 个独立的 16 位减法器,可作定时 / 计数器使用; 计数器按二 /BCD 方式减法计数,从预常减到零时,OUT 端输出一信号。

数据总线缓冲 器

计数器0

读 / 写

逻辑

控制字

寄存器

计数器1

计数器2

CLK0

CLK1

CLK2

GATE0

GATE1

GATE2

OUT0

OUT1

OUT2

D7 ~ D0

RDWRA0A1

CS

8253 内部结构

内部数据总线* 数据总线缓冲器 ( 传送信息 ) 写控制字 , 写时常, 读计数值

* 读写逻辑* 控制字寄存器 ( 存放控制字 )

Page 3: 第八章  可编程定时 / 计数器 8253 及其应用

数据总线缓冲 器

计数器0

读 / 写

逻辑

控制字

寄存器

计数器1

计数器2

CLK0

CLK1

CLK2

GATE0

GATE1

GATE2

OUT0

OUT1

OUT2

D7 ~ D0

RDWRA0A1

CS

8253 内部结构

内部数据总线

三 .8253 的引线

* 数据线( D7~D0 )* 地址线:选择内部寄 存器;* 控制线:完成片选和 读写操作。

CLK :输入脉冲线;GATE :门控信号输入线; GATE=0 禁止计数, GATE=1 允许工作;OUT :输出引脚; 当计数到“ 0” 时, OUT 端输出一信号。

Page 4: 第八章  可编程定时 / 计数器 8253 及其应用

CS RD WR A1 A0 寄存器选择和操作0 1 0 0 0 写入计数器 00 1 0 0 1 写入计数器 10 1 0 1 0 写入计数器 20 1 0 1 1 写入控制寄存器0 0 1 0 0 读计数器 00 0 1 0 1 读计数器 10 0 1 1 0 读计数器 20 0 1 1 1 无操作(三态)1 * * * * 禁止(三态)

8253 输入信号组合的功能表

Page 5: 第八章  可编程定时 / 计数器 8253 及其应用

四 . 8253-PIT 的控制字

00 选择计数器 001 选择计数器 110 选择计数器 211 非法选择

0= 二进制1=BCD

计数器 读 / 写格式 工作方式 数制D0D1D2D3D4D5D6D7

在 8253 的初始化编程中,由 CPU 向 8253 的控制字寄存器写入一个控制字来规定 8253 的工作方式。

00 计数器锁存命令10 只读 / 写最高有效字节(高八位)01 只读 / 写最低有效字节(低八位)11 先读写最低有效字节然后读写最高有效字节

000 方式 0001 方式 1*10 方式 2*11 方式 3100 方式 4101 方式 5

Page 6: 第八章  可编程定时 / 计数器 8253 及其应用

五 . 8253-PIT 的工作方式

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

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

1. 方式 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 ÖÃʱ³£

Page 7: 第八章  可编程定时 / 计数器 8253 及其应用

方式 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

Page 8: 第八章  可编程定时 / 计数器 8253 及其应用

3 2

OUT

GATE

CLK

WR

CW=14 LSB=3

3 2 1 32

方式 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

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

5 4 2

OUT

GATE=1

CLK

WR

CW=16 LSB=5

25 45 2 5 2

方式 3 (方波速率发生器)

* 与方式 2 的区别在于:输出为周期是 N 个 CLK 脉冲的方波。* 若计数值为偶数,每个 CLK 使计数值减 2 ,计到 0 , OUT 改变状态,重装计数值开始新的计数。

* 若计数值为奇数,第一个脉冲先减 1 ,以后,每个 CLK 使计数值减 2 ,计到 0 时, OUT 改变状态,重装计数值后,第一个脉冲减 3 ,以后,每个 CLK 使计数值减 2 ,计到 0 时, OUT 改变状态。

*GATE 信号控制计数过程;

* 计数过程中写入新的计数值将在半周期结束时装入计数器。

4 2 4

OUT

GATE=1

CLK

WR

CW=16 LSB=4

2 4 2 4 2

Page 10: 第八章  可编程定时 / 计数器 8253 及其应用

例:要求计数器 0 工作于方式 3 ,输出方波的频率为 2KHz ,计数脉冲的频率为 2.5MHz ,采用 BCD 计数,试写出初始化程序段。

2. 常数计算: TC = 2.5MHz/2KHz=1250

MOV AL , 37HOUT 83H , ALMOV AL , 50HOUT 80H , ALMOV AL , 12HOUT 80H , AL

1. 8253 的端口地址为: 80H , 81H , 82H , 83H 。

00 01111 13. 8253 的方式控制字为:4. 初始化程序段:

Page 11: 第八章  可编程定时 / 计数器 8253 及其应用

方式 4 (软件触发选通)

3 2 1

OUT

GATE=1

CLK

WR

CW=18 LSB=3

0 FF FE FD

3 2 1

OUT

GATE=1

CLK

WR

CW=18 LSB=3

01 FF2

LSB=2

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

* 计数器只计数一遍;* OUT 是 N+1 个 CLK 后变低;* 计数过程中, GATE=0 , 计数暂停;* 若在计数过程中,改变计数值,则按新的计数值重新开始计数。

Page 12: 第八章  可编程定时 / 计数器 8253 及其应用

方式 5 (硬件触发选通)

3 2 1

OUT

GATE

CLK

WR

CW=1A LSB=3

0 FF 3

3 2 1

OUT

GATE

CLK

WR

CW=1A LSB=3

0 FF3 2

* 写入控制字 OUT=1 ;* 写入常数后,由 GATE 的上升沿启动计数;* 计数到 0 , OUT=0 ;* 一个 CLK 周期后, OUT=1 ,计数器停止计数。

* 计数器只计数一次;* OUT 是 N+1 个 CLK 后变低;* 在 计数过程中出现的 GATE脉冲, 将使 计数器重新开始计数,对输出状态没有影响;* 若在计数过程中改变计数值,只要没有 GATE 信号触发,不影响计数过程。有新的 GATE 信号触发则按新的计数值开始计数。

Page 13: 第八章  可编程定时 / 计数器 8253 及其应用

六 . 8253-PIT 工作方式小结

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

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

Page 14: 第八章  可编程定时 / 计数器 8253 及其应用

计数值 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的负脉冲

Page 15: 第八章  可编程定时 / 计数器 8253 及其应用

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

GATE方式 功 能

低或变为低 上升沿 高

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

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

-----

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

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

允许计数

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

启动计数 允许计数

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

Page 16: 第八章  可编程定时 / 计数器 8253 及其应用

方式 功能 改变计数值0 计完最后一个数中断 立即有效1 硬件再触发单拍脉冲 外部触发后有效2 速率发生器 计数到 1后有效

3 方波速率发生器外部触发后有效计数到 0后有效

4 软件触发选通 立即有效5 硬件触发选通 外部触发后有效

4. 在计数过程中改变计数值立即有效是写入计数值后的下一个 CLK 脉冲后,新的计数值开始起作用。

5. 计数到 0 后计数器的状态

计数器减到 0 后并不停止,在方式 0 , 1 , 4 , 5 ,计数器减到 0 后从 FFFF/9999 继续计数。方式 2 , 3 是连续计数,计数器自动装入计数值后,继续计数。

Page 17: 第八章  可编程定时 / 计数器 8253 及其应用

七 . 8253-PIT 的编程

8253-PIT 初始化编程的步骤:

1. 写入通道控制字,规定通道的工作方式;( A1A0=11 )2. 写入计数值(由控制字的 D7D6 确定通道号)。① 若规定只写入低 8 位,则写入的为计数值的低 8 位,高8 位自动置 0 ;② 若规定只写入高 8 位,则写入的为计数值的高 8 位,低8 位自动置 0 ;③ 若是 16 位计数值,则分两次写入,先写入低 8 位,再写入高 8 位。

Page 18: 第八章  可编程定时 / 计数器 8253 及其应用

例 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 中

第二节 Intel8253-PIT 的应用举例

Page 19: 第八章  可编程定时 / 计数器 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产生各种定时波形。

Page 20: 第八章  可编程定时 / 计数器 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 。

Page 21: 第八章  可编程定时 / 计数器 8253 及其应用

;通道 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

Page 22: 第八章  可编程定时 / 计数器 8253 及其应用

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

连, 8253 的各端口的地址为 81H 、 83H 、 85H 、 87H 。

OUT1 输出占空比为 1:1 的方波, 8253 端口 1 工作在方式 3 。时钟频率为 2MHz 时, 16 位计数通道的最大定时时间为:

0 .5s65536=32.768ms

级连:通道 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

Page 23: 第八章  可编程定时 / 计数器 8253 及其应用

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

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

Page 24: 第八章  可编程定时 / 计数器 8253 及其应用

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

8253 端口地址: F0H , F2H , F4H , F6H ,8253 工作方式:计数器 1 工作于方式 0 ,按 BCD计数,先读写低字节,后读写高字节。

D7-D0

OUT0

WR

RD

A1

A0

CS

GATE1

CLK1

译码

INTR

WR

RD

A2

A1M/IO

AB

+5V+5V +5V

Page 25: 第八章  可编程定时 / 计数器 8253 及其应用

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

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

当前计数值的读取

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

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

Page 26: 第八章  可编程定时 / 计数器 8253 及其应用

第三节 Intel8253-PIT 在 PC/XT 机中的应用

GATE0GATE1GATE2

CLK0CLK1CLK2

OUT2

A1A0RDWR

D7—D0CS

IRQ018.2Hz

T/C2 OUT

896Hz

A1A0

IORIOW

T/C CS

D7—D0

U21

D Q

C Q OUT1

OUT0

5V

U73

D S Q

C CLR

DRQ066.2878KHz

PCLK

2.38636MHz

RESETDRV

PB0

DACK0BRD

40H---43H

方式 3 , n =0

方式 2 , n =18

方式 3 , n =1331