29
8.2 计计计 / 计计计计计计计 8253 计计计 计计计计计计计 计计计计计计计计计计计计计计计 计计计 计计计计计计 计计计计计 计计计计计计计计计 3 计计计1 计计计计 计计计计计计计计计计计计计 计计计计计 2 计计计计 计计计计计计计 计计计计计计计计计计计计计计计计计计计计计计计计计 计 ,, 计计计计 计计计 CPU 计计计 CPU 计计计计3 计计计计计计计计计 计计计 ./ 计计计计计计计计计计计计计计计计计 计计计计 CPU 计计计计 计计计 CP U 计计计

8.2 计数器 / 定时器接口芯片 8253

Embed Size (px)

DESCRIPTION

8.2 计数器 / 定时器接口芯片 8253. 微机系统中经常会要求有 一些实时时钟以实现定时或延时控制 ,也要求 有计数器对外部事件计数. 实现上述要求可采用 3 种方法: 1 .硬件定时 用数字逻辑电路来构成, 通用性、灵活性较差 2 .软件定时 利用程序段实现,通过正确挑选指令和安排循环次数很容易改变定时时间,但 软件定时占用了 CPU ,降低了 CPU 的利用率。 3 .采用可编程定时器/计数器 定时时间 与 计数值 可由 软件 来确定和改变,设定后与 CPU 并行工作,不占用 CPU 的时间。. 8.2.1 8253 的内部结构. - PowerPoint PPT Presentation

Citation preview

Page 1: 8.2   计数器 / 定时器接口芯片 8253

8.2 计数器 / 定时器接口芯片 8253微机系统中经常会要求有一些实时时钟以实现定时或延时控制,也要求有计数器对外部事件计数 实现上述要求可采用 3 种方法: 1.硬件定时用数字逻辑电路来构成,通用性、灵活性较差 2.软件定时利用程序段实现,通过正确挑选指令和安排循环次数很容易改变定时时间,但软件定时占用了 CPU ,降低了 CPU 的利用率。 3.采用可编程定时器/计数器定时时间与计数值可由软件来确定和改变,设定后与 CPU 并行工作,不占用 CPU 的时间。

Page 2: 8.2   计数器 / 定时器接口芯片 8253

8.2.1 8253 的内部结构

数据总线 D7~D0 控制寄存器 VCC +5V

Gnd

RD 计数器 0

地址线 WR 高 8 低 8 计数初值寄存器 CLK0

译 (CR) GATE0

码 减 1计数器 高 8 低 8 OUT0

器 CS (CE)

高 8 低 8 输出锁存器

(OL)

A1 CLK1

A0 计数器 1 GATE1

OUT1

计数器 2 CLK2

GATE2

OUT2

Page 3: 8.2   计数器 / 定时器接口芯片 8253

2. 控制寄存器——存放 CPU 送来的控制字,控制 8253 的工作方式。有 3 个,只占用一个地址,不能读。

1. 三个独立的计数 / 定时通道——计数器 0 ,计数器1 ,计数器 2 。每个计数器的结构为:( 1 ) 16 位计数初值寄存器( CR )——存放计数的初值(预置);( 2 ) 16 位的计数执行部件( CE )—— 16 位减 1计数器;( 3 ) 16 位输出锁存器( OL )——跟随 CE 变化,但可以锁存,便于 CPU 读取。

Page 4: 8.2   计数器 / 定时器接口芯片 8253

1. 数据线 D7 ~ D0——8 位,双向、三态,用于 8253与 CPU 之间的数据传送。包括:向 8253 写控制字,送计数初值及读计数器的现行值。

2. 读写控制信号 RD , WR

3. 片选及地址线 CS , A1 , A0—— 用于芯片及内部寄存器、计数器的寻址。

在 IBM-PC 机中, A9A8A7A6A5=00010 选中( CS=0 ), A4A3A2 未用, A1A0 接 8253 的 A1A0 。

8.2.2 8253 的引脚功能

Page 5: 8.2   计数器 / 定时器接口芯片 8253

A9A8A7A6A5A4A3A2A1A0 功能 基本地址0 0 0 1 0 × ×× 0 0 选中计数器 0 40H

0 0 0 1 0 × ×× 0 1 选中计数器 1 41H

0 0 0 1 0 × ×× 1 0 选中计数器 2 42H

0 0 0 1 0 × ×× 1 1 选中控制寄存器 43H

(其他) × ×× ×× 芯片禁止(说明: 8253 有 32 个地址,除基本地址外,其余为影像地址)

Page 6: 8.2   计数器 / 定时器接口芯片 8253

5. 计数器门控输入信号 GATE0 ~ GATE2—— 启动或控制计数 / 定时信号;

6. 计数器输出信号 OUT0 ~ OUT2—— 计数结束、定时到输出信号或分频输出信号。

4. 计数器时钟输入 CLK0 ~ CLK2—— 计数 / 定时的基值信号

8253 : 0 ~ 2MHz

8254-2 : 0 ~ 10MHz

Page 7: 8.2   计数器 / 定时器接口芯片 8253

A1 A0 D7 D6 D5 D4 D3 D2 D1 D0

1 1 SC1 SC0 RL1 RL0 M2 M1 M0 BCD (地址 43H)

计数器选择 数制选择

00:计数器 0 0:二进制

01:计数器 1 1:十进制

10:计数器 2

11:非法 工作方式选择

读/写指示位 000:方式 0

00:计数器锁存 001:方式 1

01:只读/写低字节 × 10:方式 2

10;只读/写高字节 × 11:方式 3

11:先读/写低字节 100:方式 4

后读/写高字节 101:方式 5

8.2.2 8253 的编程1. 控制字格式

Page 8: 8.2   计数器 / 定时器接口芯片 8253

计数初值为 8 位,则控制字中的 RL1 、 RL0 应取 01

,初值只写入 CR 的低 8 位,高 8 位会自动置 0 ;若是 16 位初值,而低 8 位是 0 ,则 RL1RL0 应取 1

0 ,初值高 8 位写入 CR 的高 8 位, CR 的低 8 位会自动置 0 ;若是一般 16 位初值,则 RL1 , RL0 应取 11 ,应分两次写入初值,先写低 8 位、再写入高 8 位(此顺序不能反)

2. 计数初始值 计数初始值写入对应计数器的计数初值寄存器 CR ;

Page 9: 8.2   计数器 / 定时器接口芯片 8253

3. 初始化流程 先写入工作方式控制字,接着写入计数初始值

单个计数器初始化

写方式控制字

写计数低字节

写计数高字节

写方式控制字(计数器 0)

写方式控制字(计数器 1)

写方式控制字(计数器 2)

写计数低字节(计数器 0)

写计数高字节(计数器 0)

写计数低字节(计数器 1)

写计数高字节(计数器 1)

写计数低字节(计数器 2)

写计数高字节(计数器 2)

多个计数器初始化•计数器的顺序是任意的,不必一定按照计数器 0 、 l 、 2的顺序初始化;•可先写所有计数器的工作方式控制字,再装入各计数器的计数值(但先控制字再计数值的顺序不能错);•计数值先写低再写高的顺序不能错;•其他顺序无关紧要

Page 10: 8.2   计数器 / 定时器接口芯片 8253

MOV AL , 00110111B ;对计数器 0 送工作方式字OUT 43H , ALMOV AX , 1234H ;送计数初值OUT 40H , AL MOV AL , AH OUT 40H ALMOV AL , 10010100B ;对计数器 2 送工作方式字OUT 43H , ALMOV AL , 61H ;送计数初值OUT 42H , AL

例:选择计数器 0 工作于方式 3 ,计数初值为 1234,十进制计数方式;计数器 2 工作于方式 2 ,计数初值为 61H ,采用二进制计数方式,设 8253 的端口地址为 40 ~ 43H 。其初始化编程如下:

Page 11: 8.2   计数器 / 定时器接口芯片 8253

( 2 )初值写入后,要经过 1 个时钟 CLK 的上升沿和 1 个下降沿后,计数执行部件才开始计数;( 3 )在 CLK 的上升沿时,计数器对门控信号 GATE进行采样,来决定工作状态(计数、触发、停止、重新置初值);( 4 )在 CLK 的下降沿时,计数器执行部件从初值开始作减 1 计数;其中 0 是最大初值, 1 是最小初值;若以二进制数制计数,则 0 相当于 216=65536

若以 BCD (十进制)数制计数,则 0 相当于 104=10000

8253 初始化规则( 1 )对计数器设置初值前必须先写入控制字,此时,全部控制逻辑电路复位,输出 OUT 为初始状态(高电平或低电平);

Page 12: 8.2   计数器 / 定时器接口芯片 8253

读计数值——将某计数器的计数值读到 CPU 中

读到的是执行输入指令瞬间计数器的现行值。 16位计数值要分两次读至 CPU ,故必须将数据锁存。有两种办法:

利用外加控制信号 GATE使计数器暂停计数,然后按照工作方式控制字中 RL1RL0 的规定读取规定字

节CPU 向 8253 发出锁存命令字( SC1SC000XXXX )锁存计数器的当前计数值(当前计数值锁存在输出锁存器 OL ,而减 1 计数器可以继续计数),再读取输出锁存器的计数值。当 CPU 读取了规定的字节数后, OL 自动解除锁存状态,其值又跟随计数器而变化。

Page 13: 8.2   计数器 / 定时器接口芯片 8253

8.2.4 8253 的工作方式 8253 有 6 种工作方式:不同方式下,启动方式、 GATE 信号的作用、 OUT 输出波形都有所不同,但以下几条基本规则是相同的:工作方式控制字写入计数器时,输出端 OUT 进入初始状态(高电平或低电平);计数初值写入 CR 后,在下一个 CLK脉冲才装入减 1 计数器 CE ,因此该 CLK脉冲并不影响计数;CE 的减 1 计数操作发生在 CLK 的下降沿;计数器对门控信号 GATE 的采样是在 CLK 上升沿

Page 14: 8.2   计数器 / 定时器接口芯片 8253

说明:①初值装入后,要经过 1 个 CLK 的周期( 1 个上升沿和 1个下降沿)后,计数器才开始计数,所以,输出 OUT 要经过 N+1个时钟周期后才有输出;②输出 OUT 的有效电平为高电平,并可同时触发中断请求;③门控 GATE 的作用:高电平时计数,低电平或下降沿时停止计数;④CW 为写入控制字, N=4表示写入初值。

CW N=4WR

CLK

GATE

OUT N N 4 3 2 1 0 FF装控制

字 装初

值 计数开

始 计数结

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

Page 15: 8.2   计数器 / 定时器接口芯片 8253

2. 方式 1—— 可重触发的单稳态触发器 CW N=3

WR

CLK

GATE

OUT N N 3 2 1 0 FF 3 2 1 0 FF 装控制

字 装初

值 计数开

始 计数结

说明:①方式字和初值装入后,在门控 GATE 的上升沿触发下,经过 1 个 CLK 的上升沿和 1 个下降沿后,计数器开始从初值减 1 计数,同时使 OUT=0 ;当计数结束(归 0 )时, OUT=1 ,使输出产生 1 个宽度为 TW=N×TCLK 的负脉冲——单稳态触发器。②在 GATE 的上升沿触发下,输出可再次产生 1 个宽度为 TW负脉冲——可重触发。

Page 16: 8.2   计数器 / 定时器接口芯片 8253

说明:①方式字装入后, OUT=1 为初始状态。②初值装入后,经过 1 个 CLK 的周期,计数器开始从初值减 1 计数,计到 1 (不是 0 )时,使输出 OUT=0 并保持 1 个 CLK周期,然后 OUT=1 ,开始下一个新的计数周期,使输出为 CLK 的时钟 1/N 分频信号,占空比 q= ( N-1 ) /N 。③门控 GATE 的作用:高电平时计数,低电平停止计数;用 GATE 的上升沿可以触发分频重新开始——称为硬同步;而在 GATE=1时,用装初值的方法启动分频开始——称为软同步

CW N=3WR

CLK

GATE

OUT N N 3 2 1 3 2 1 3 2 1 3

3. 方式 2—— 分频器

Page 17: 8.2   计数器 / 定时器接口芯片 8253

4. 方式 3—— 方波发生器

说明:特点与方式 2类似,主要区别:输出方波,其占空比 q 为①当 N 为偶数时, q=0.5 ;②当 N 为奇数时, q= ( N+1 ) /2N 。

CW N=4WR

CLK

GATE

OUT N N 4 3 2 1 4 3 2 1 4 3 2

Page 18: 8.2   计数器 / 定时器接口芯片 8253

5. 方式 4—— 软件触发的选通信号发生器

说明:①初值装入后,经过 1 个 CLK 的周期,计数器开始从初值减 1 计数,计数结束(归 0 )时,使输出 OUT产生一个宽度为 1 个 CLK周期的负脉冲——选通信号。②(用指令)重新装入初值后,经过 N+1 个 CLK周期,又可使 OUT产生一个选通信号——(用软件)可重触发。③门控 GATE 的作用:高电平时计数,低电平时停止计数;

CW N=3WR

CLK

GATE

OUT N N 3 2 1 0 FF FE 3 2 1 0 FF

N=3

Page 19: 8.2   计数器 / 定时器接口芯片 8253

CW N=3WR

CLK

GATE

OUT N N 3 2 1 0 FF FE 3 2 1 0 FF

6. 方式 5——硬件触发的选通信号发生器

说明:①初值装入后,在 GATE 的上升沿的触发下,经过 1 个CLK 的周期,计数器开始从初值减 1 计数,计数结束(归 0 )时,使输出 OUT产生一个宽度为 1 个 CLK周期的负脉冲——选通信号。②用 GATE 的上升沿可重新触发,使 OUT产生一个选通信号——(用硬件)可重触发。

Page 20: 8.2   计数器 / 定时器接口芯片 8253

总结:1) 方式 2 、 4 、 5 的输出波形是相同的,都是宽度为一个 CLK周期的负脉冲。

但方式 2 是连续工作,方式 4 由软件(设置奇数值)触发启动方式 5 由门控脉冲触发启动2) 写入计数值后才能开始计数 方式 0 、 2 、 3 、 4 在写入计数值后,计数过程就开始了 方式 1 、 5需要外部触发启动,才开始计数

3) 6 种方式中只有方式 2 、 3 是连续计数,其他 4 种方式都是一次计数,要继续工作需要重新启动,方式 0 、 4 由写入计数值(软件)启动,方式 1 、 5 要由外部信号(硬件)启动。

Page 21: 8.2   计数器 / 定时器接口芯片 8253

例1, 下图是用 8253 监视的一个生产流水线示意图,每通过 50 个工件扬声器响 5秒钟,频率为 2000Hz。

+5V

工件

INT OUT0 CLK0 光敏 光源

电阻

8253

1.4MHz CLK1 驱

8255PC0 GATE1 OUT1 动 扬声器

8.2.5 8253 应用举例

Page 22: 8.2   计数器 / 定时器接口芯片 8253

②计数器 1 工作于方式 3 方波方式,产生 2000Hz喇叭音调,方式控制字为: 01110111B ( 77H ),即方式 3 ,先低后高, BCD 数制;初值(分频比) = ( 1.4×106 ) /2000=700(H) 。

分析:①计数器 0 工作于方式 2 分频方式,每隔 50 个 CLK

0产生一个中断 INT ;方式控制字为: 00010101B (15H ),即方式 2 ,只装低 8 位, BCD 数制,初值为 50 ( H )。

Page 23: 8.2   计数器 / 定时器接口芯片 8253

主程序段: MOV AL , 15H ;置计数器 0 方式OUT 43H , AL ;MOV AL , 50H ;装初值OUT 40H , AL ;MOV AL , 00H ;关 8255 的 PC0

OUT 63H , AL ;MOV AL , 77H ;置计数器 1 方式OUT 43H , AL ;MOV AL , 00H ;装初值OUT 41H , AL ;MOV AL , 07H ;OUT 41H , AL ;STI ;

LOP : HLT ;JMP LOP ;

Page 24: 8.2   计数器 / 定时器接口芯片 8253

(说明:在装入 8253 计数器的初值时,不管是二进制数制还是 BCD 数制,初值后均要加“ H” 。)

中断服务程序:INTP : MOV AL , 01H ;开 8255 的 PC0

OUT 63H , AL ;CALL DLY5S ;调 5S 延迟子程序MOV AL , 00H ;关 8255 的 PC0

OUT 63H , AL ;IRET ;

Page 25: 8.2   计数器 / 定时器接口芯片 8253

2. 计数器 1—— 向 DMAC 系统提供定时中断,刷新动态 RAM :工作于方式 2 (分频), CLK1=1193181.6Hz , BCD 数制,初值 =18 , OUT1 输出频率为 1193181.6/18=66. 287KHz (周期为 15. 0857s )的矩形波向 DMAC提供定时中断。

8253 在 IBM-PC 机中的应用1. 计数器 0—— 向系统提供定时中断:工作于方式 3(方波), CLK0=1193181.6Hz ,二进制数制,初值 =0 (即 65536 ), OUT0 输出频率为 1193181.6/65536=18. 2Hz (周期为 55ms )的方波控制 8259A 的 IRQ0

(日时钟)的中断,即每隔 55ms产生一次中断。

Page 26: 8.2   计数器 / 定时器接口芯片 8253

3. 计数器 2——提供喇叭的音调:工作于方式 3 (方波), CLK2=1193181.6Hz , BCD 数制,初值 =533, OUT2 输出频率为 1193181.6/533=900Hz 的方波作为喇叭的声源。

练习:按上述要求写出 8253 的初始化程序。

Page 27: 8.2   计数器 / 定时器接口芯片 8253

练习:用 8253 设计洗衣机定时程序,设输入频率为2MHz ,要求能产生 3 分、 6 分和 12 分的定时,定时到产生中断,试画出 8253 的连接示意图并编写相应的程序段。

送 8259产生INT

CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2

2MHz

5ms

1s

分析:计数器 0 工作于方式 3 ,初值 N=0 ( 10000)( H )

计数器 1 工作于方式 3 ,N=200 ( H )

计数器 2 工作于方式 0 ,初值由 3 分、 6 分、 12分除 1S (减 1 )得出

Page 28: 8.2   计数器 / 定时器接口芯片 8253

MOV AL , 00110111B ;计数器零

OUT 43H , AL ;

MOV AL , 00H ;

OUT 40H , AL ;

OUT 40H , AL ;

MOV AL , 01110111B ;

OUT 43H , AL ;

MOV AL , 00H ;

OUT 41H , AL ;

MOV AL , 02H ;

OUT 41H , AL ;

Page 29: 8.2   计数器 / 定时器接口芯片 8253

3 分定时: N=180/1=180

MOV AL , 10110001B;

OUT 43H , AL ;

MOV AL , 80H ;

OUT 42H , AL ;

MOV AL , 01H ;

OUT 42H , AL ;

6 分定时: N=360/1=360

MOV AL , 10110001B;

OUT 43H , AL ;

MOV AL , 60H ;

OUT 42H , AL ;

MOV AL , 03H ;

OUT 42H , AL ;