第 7 章 可编程定时器 / 计数器 8253-5 ( pit )

34
第7第 第第第第第第 / 第第第 825 3-5 PIT 第第“第第第第第第第第” 第第第第第第第第 第第第第第第 ,、。 第第第第第第第第第第第第第第第第第1. 第第第第第第 / 第第第 第第第 CPU 第第第 第第第第第第 第第1 第第第第第第第第第第第第 第第第第第第第第第 ):; 2 第第第第第 第第第第第 第第第第 ):,。 2 第第第第第 第第第第第第第第第 、:。

Upload: kailey

Post on 13-Jan-2016

155 views

Category:

Documents


0 download

DESCRIPTION

第 7 章 可编程定时器 / 计数器 8253-5 ( PIT ). 又叫“可编程间隔定时器”,可实现延时控制、定时和计数。 计数和定时信号的产生可采用三种方法: 1. 、硬件的计数器 / 定时器,不占用 CPU 的时间,可多任务并行工作。 1 )固定的数字逻辑电路实现:通用性和灵活性差; 2 )可编程的:灵活性好,较通用。 2 、软件实现:通用性和灵活性好。. 7.1 可编程定时器 / 计数器的工作原理. 如图 7-1 , 控制寄存器(可写) 计数初值寄存器 CR (可写) 计数执行单元 CE 计数输出锁存器 OL (可读) 状态寄存器(可读) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

第 7 章 可编程定时器 / 计数器 8253-5 ( PIT )

• 又叫“可编程间隔定时器”,可实现延时控制、定时和计数。

• 计数和定时信号的产生可采用三种方法:• 1. 、硬件的计数器 / 定时器,不占用 CPU 的

时间,可多任务并行工作。• 1 )固定的数字逻辑电路实现:通用性和灵活

性差;• 2 )可编程的:灵活性好,较通用。• 2 、软件实现:通用性和灵活性好。

Page 2: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7.1 可编程定时器 / 计数器的工作原理• 如图 7-1 ,• 控制寄存器(可写)• 计数初值寄存器 CR (可写)• 计数执行单元 CE

• 计数输出锁存器 OL (可读)• 状态寄存器(可读)• 计数器:由设置的计数初值,在门控脉冲 GATE

控制下,对 CLK 脉冲开始减 1 计数,当减到 0 ,输出一个信号 OUT ,并置状态寄存器,供查询用。此信号可启动 I/O 操作或作为中断请求。

Page 3: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 定时器:由设置的计数初值,在门控脉冲 GATE 控制下,对 CLK 脉冲开始减 1计数,当减到 0 ,输出一个脉冲,再从初值减 1 计数,连续输出一系列定时间隔的脉冲,间隔 Tout=Tclk* 计数初值 N ( 或 Fout=Fclk/N )。

• 通过控制寄存器可设置多种工作方式。

Page 4: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7.2 8253-5 的结构和功能

• 计数速率可达 2.6MHz, 可编程设置 6 种工作方式 .

• 适用于 :

• 1 、方波频率发生器• 2 、分频器• 3 、实时时钟• 4 、事件计数器• 5 、程控单脉冲发生器

Page 5: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

结构• 结构框图及引脚排列如图 7-2 ,• 1 、与 CPU 的连接信号:• D7~D0 :双向数据线。• RD- 、 WR- :读、写信号• CS- :片选信号,由 A2~A15 译码产生• A0 、 A1 :片内寄存器寻址,选择 3 个计数

器和控制寄存器。• 2 、结构• 1 ) 3 个计数器:结构相同、工作独立,工

作方式由控制字设定。

Page 6: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 包括: 16 位的计数初值寄存器 CR (可写)、计数执行单元 CE (减法计数寄存器)和计数输出锁存器 OL (可读); 8 位的控制寄存器。

• 有三条信号线:• 计数输入 CLK :输入定时基准和计数脉冲;• 输出信号 OUT :指示计数完成,输出脉冲波形;• 门控输入 GATE :允许 / 禁止计数、启动 / 停止

计数。起输出信号的同步作用(参见表 7-6 )• 2 )数据总线缓冲器:写控制字、装入计数初值

和读取计数值。

Page 7: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 3 )读写逻辑:有 A1 、 A0 、 CS- 、 RD- 、 WR- 组合决定功能,见表 7-1 。

• 4 )控制字(工作方式)寄存器:由 A1A0=11 选中。规定第一次写入为控制字,此后写入为命令。

• 3 、控制字寄存器的格式:见表 7-2 ~ 7-5

Page 8: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7-2 ~ 7-5

Page 9: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7.3 8253-5 的工作方式• 一、规定:• 1 )控制字写入时,立即复位;• 2 )写计数初值后,到下一个时钟下降沿

才开始计数;• 3 )对于给定的方式,对 GATE 的触发

方式有具体的规定:• 电平触发:在时钟脉冲上升沿对门控信

号电平进行采样, GATE 至少保持一个Tclk 宽度;

Page 10: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 上升沿触发:门控脉冲上升沿使边沿触发器置位,在下一个时钟脉冲上升沿被采样,GATE 可很窄,可正脉冲也可负脉冲。

• 4 ) OUT 波形都是在 CLK 的下降沿产生电平的变化。

• 二、六种方式 设计数初值 N=4 ,如图 ...

• 1 、方式 0—— 计数结束中断• GATE=0 ,计数器停止计数, GATE=1 ,

重新开始计数,直到计数结束, OUT 为高电平,再次启动要重新输入计数值, GATE 不影响 OUT 电平。

Page 11: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )
Page 12: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 2 、方式 1—— 硬件可重触发单稳态方式• 基本和方式 0 相似,但输出单稳态是用 GA

TE 上升沿重触发的, OUT 低电平宽度等于计数时间( NTclk )。

• 3 、方式 2—— 速率发生器(分频方式)• 输出的负脉冲宽度等于 Tclk (简写为 T ),

频率是 CLK 的 N 分之一, GATE 为低电平时停止计数。

• 4 、方式 3—— 方波方式• 输出的负脉冲宽度等于 NT/2 ,频率是 CLK

的 N 分之一, GATE 为低电平时停止计数。

Page 13: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 若输入计数初值时偶数,则 OUT 在计数前一半为高,后一半为低电平;

• 若输入计数初值时奇数,则 OUT 在( N+1 ) T/2前为高,后( N-1 ) T/2 为低电平。

• 5 、方式 4—— 软件触发选通方式• 基本同方式 0 ,但计数结束输出一负脉冲,宽度

为 T ,每次靠软件设置计数初值才能计数, GATE 为低电平时停止计数,但 OUT 不变。

• 6 、方式 5—— 硬件触发选通方式• 基本同方式 1 ,但计数结束输出一负脉冲,宽度

为 T ,用软件设置一次计数初值后,每次要靠门控脉冲上升沿选通才能计数。

Page 14: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7.4 8253-5 的初始化• 一、写入方式控制字• 用 OUT 指令,地址: CS-=0 , A1A0=11

• 二、写入计数初值• 按控制字中的 RL1RL0 的规定写,可 8 位

或 16 位,若为 16 位,要分两条输出指令;且要满足 BCD 位的规定。

• 用 OUT 指令,地址: CS-=0 ,• A1A0=00 计数器 0

• 01 计数器 1

• 10 计数器 2

Page 15: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 三、读计数值 有两种方法:• 1 、直接读计数器端口• 先用 GATE无效或阻断时钟输入,以保证稳定

读出。• 用 IN 指令,地址:同二。• 2 、锁存计数器的当前计数值• 1 )锁存命令: RL1RL0=00 ,用 OUT 指令,

地址: A1A0=11 。• 2 )读出,用 IN 指令,同二。• 注意:必须读完控制字中 RL1RL0 规定的字节

数,才能保证下次的正确读写。

Page 16: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7.5 8253-5 的应用举例• 例: 8253 在 IBM-PC机中的应用• 在系统中作定时信号用。• 1 、硬件连接 逻辑图见图 7-5

• D7~D0 、 RD- 、 WR- , CS- 接 Y2 , A1A0 片内寄存器寻址,端口地址: 040H~043H

• 3 个计数器的 CLK 的频率为 1.193186MHz, 是 PCLK经二分频后产生的 .

• GATE0 和 GATE1=1 (常启状态), GATE2 由 8255 的 B口( PB0 允许发声)控制开启。

• OUT0——8259 的日时钟中断 IRQ0 ;

Page 17: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7-5

Page 18: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• OUT1——D 触发器的时钟,二分频后锁存器的输出作 8237 的 DREQ0 ;

• OUT2——8255 的 PC5 (代表音调),同时经 75477 到 8255 的 PC4 (代表发声数据),供 CPU检测用。

• 2 、各计数器的功能:• (1) 计数器 0 :产生系统日时钟信号,工作于

方式 3 ,计数初值为 0 ,控制字为 36H , OUT0 的输出频率为 1193181.6/65536=18.2Hz的方波脉冲序列 , 即每隔 1/18.2=55ms 产生一次中断请求 , 计时并时钟显示 .

Page 19: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• (2) 计数器 1: 产生动态存储器刷新请求 , 工作于方式2, 计数初值为 18(12H) ,控制字为 54H,

• OUT1 的输出频率 =1193181.6/18=66.2878KHz 的负脉冲序列 , 即每隔 1/66287.8=15.08us 向 8237A 的 DREQ0 请求 , 进行一行的刷新操作 .

• (3) 计数器 2: 为扬声器提供约 900Hz 的方波信号 , 工作于方式 3, 计数初值为 0533H(1331) ,控制字为 B6H,OUT2 输出频率为 1193181.6/1331=894Hz 的方波信号 .

• 3 、编程步骤• 1 )初始化:写入方式控制字;• 写入计数初值;• 2 )控制程序

Page 20: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• ( 1 )对计数器 0 的初始化程序• MOV AL , 36H• OUT 43H , AL• MOV AL , 0• OUT 40H , AL• OUT 40H , AL• ( 2 )对计数器 1 的初始化程序• MOV AL , 54H• OUT 43H , AL• MOV AL , 12H( 或 18D )• OUT 41H , AL

Page 21: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• ( 3 )对计数器 2 的初始化程序• MOV AL , B6H ; 若要 1KHz 的方波信号 , 计数• OUT 43H , AL ;初值为多少?如何编程?• MOV AX , 0533H • OUT 42H , AL• MOV AL , AH• OUT 42H , AL

• ( 4 )控制程序 使 PB1PB0=11

• IN AL , 61H• MOV AH , AL• OR AL , 03H• OUT 61H , AL

Page 22: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

例:三个计数通道组合应用

• 应用电路如图 7-6所示。设置如下 :

• 通道 0 :方式 2 ,计数初值为 1000D

• 通道 1 :方式 1 ,计数初值为 500D

• 通道 2 :方式 3 ,计数初值为 2000D

• 外接时钟 CLK 为 2.5MHz

• 画出 CLK0~2 , GATE0~2 及 OUT0~2 波形,计算OUT 的重复周期和时间,并写出初始化程序。

Page 23: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7-6

Page 24: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 解题分析• ( 1 ) fCLK0=fCLK2=fCLK= 2.5MHz

• T=1/f=400ns

• 通道 2 :方式 3 ,计数初值为 2000 ,输出方波。 TOUT2=2000T=800us

• 通道 1 :方式 1 ,计数初值为 500 ,输出单脉冲。因 TCL

K1= TOUT2

• TOUT1=500 TCLK1 =400000us

• 通道 0 :方式 2 ,计数初值为 1000 ,输出一串负脉冲。TOUT2=1000T=400us ,但持续时间 t 为 TOUT1 =400000us=400ms

• OUT 为 OUT0 的反相波形,如图 7-7

• TOUT =400ms , tOUT=400us

Page 25: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7-7

Page 26: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• ( 2 )初始化程序:设端口地址为 80H~83H• MOV AL , 00110101B ;通道 0 ,方式 2• OUT 83H , AL• MOV AL , 00H ;分两次送• OUT 80H , AL• MOV AL , 10H • OUT 80H , AL• MOV AL , 01110011B ;通道 1 ,方式 1• OUT 83H , AL• MOV AL , 00H ;分两次送• OUT 81H , AL• MOV AL , 05H • OUT 81H , AL

Page 27: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• MOV AL , 10110111B ;通道 2 ,方式 3

• OUT 83H , AL

• MOV AL , 00H

• OUT 82H , AL

• MOV AL , 20H

• OUT 82H , AL

• ……

• (3)讨论• 若为二进制计数 , 如何改 ?

Page 28: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 例: 8253 在实时控制系统中的应用• 如图 7-8 ,作采样周期发生器。计数器

输出作定时中断信号 IRQ2 ,再连到 8259 的 IR2 上。

• 1 、采样周期发生器的设计原理• 采样周期一般在 0.5s~ 几十 s 。• 而对一个计数器,用 1.19MHZ 的 CLK,N

取最大 65536 时 ,OUT 周期也只有约 55ms 。

• 故要多个计数器串联使用。前级作分频器用。

Page 29: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

7-8

Page 30: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 1 、硬件连接• 如图 7-8 所示。 fCLK0=2*fPCLK

• IBM-PC 机的 CPU 是 8088 。与 CPU 的连接:• 数据线: DB7~DB0——D7~D0• 地址线: AB0——A0 , AB1——A1• AB9~AB2=10001100——CS• 端口地址为 230H~233H• 控制线: IOR——RD• IOW——WR • 8253 连接: GATE0 、 1——+5V ,计数器 0 输出

OUT0 作 CLK1 , PCLK 二分频后输入 CLK0 ,OUT1——IRQ2

Page 31: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• 2 、软件编程• 分析:中断类型码: 0AH• 中断服务程序的程序名为 RTIME• 中断向量地址 =0A*4=0028H• 计数器 0 :工作方式 2 , N=0 (二进制低字节 =256 )• 计数器 1 :工作方式 3 , N=TIME (二进制 16 位)• ( 1 ) 8253 初始化程序• MOV DX , 233H ;初始化计数器 0• MOV AL , 00010100B• OUT DX , AL• MOV DX , 230H• MOV AL , 0• OUT DX , AL

Page 32: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• MOV DX , 233H ;初始化计数器 1

• MOV AL , 01110110B

• OUT DX , AL

• MOV DX , 231H

• MOV AL , BYTE PTR TIME ; 8 位分别送• MOV DX , AL

• MOV AL , BYTE PTR TIME+1

• OUT DX , AL

• ( 2 )中断服务程序首地址送中断向量表• MOV DI , 28H

• CLD

• MOV AX , OFFSET RTIME

Page 33: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

• STOSW

• MOV AX , SEG RTIME

• STOSW

• …...

Page 34: 第 7 章  可编程定时器 / 计数器 8253-5 ( PIT )

8253 定时 / 计数器实验

• 编程将 8253 定时器 0 设置为方式 3 (方波),定时器 1 设置为方式 2 (分频),定时器 0 输出的脉冲作为定时器 1 的时钟输入。定时器 2 设置为方式 2 (分频),用示波器观察各对应引脚之间的波形关系。