エアコン畜⠰ 댰 ÿ⇿㋿屲N11【07-8253】取扱説明書 …Title エアコン畜 댰 ÿ ⇿ 屲N11【07-8253】取扱説明書 Author 株式会社オーム電機 Created
第八章 可编程定时 / 计数器 8253 及其应用
-
Upload
chester-dunlap -
Category
Documents
-
view
113 -
download
0
description
Transcript of 第八章 可编程定时 / 计数器 8253 及其应用
第八章 可编程定时 / 计数器 8253 及其应用
第一节 Intel8253-PIT 的工作原理一 . 8253 的功能
计算机系统中,实现定时或延时有三种方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。8253 为可编程的硬件定时 / 计数器。
1. 主要功能* 具有 3 个独立的 16 位计数器通道;* 每个计数器均可按二进制或二—十进制计数;* 每个计数器的计数速率高达 2MHz ;* 每个通道有 6 种工作方式,可由程序设置和改变;* 所有的输入输出都与 TTL 兼容。
习题: 8- 4, 8-5
二 . 8253 的内部结构
* 三个计数器(减法器) 3 个独立的 16 位减法器,可作定时 / 计数器使用; 计数器按二 /BCD 方式减法计数,从预常减到零时,OUT 端输出一信号。
数据总线缓冲 器
计数器0
读 / 写
逻辑
控制字
寄存器
计数器1
计数器2
CLK0
CLK1
CLK2
GATE0
GATE1
GATE2
OUT0
OUT1
OUT2
D7 ~ D0
RDWRA0A1
CS
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 端输出一信号。
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 输入信号组合的功能表
四 . 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
五 . 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 ÖÃʱ³£
方式 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
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
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
例:要求计数器 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. 初始化程序段:
方式 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 , 计数暂停;* 若在计数过程中,改变计数值,则按新的计数值重新开始计数。
方式 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 信号触发则按新的计数值开始计数。
六 . 8253-PIT 工作方式小结
1. 输出端 OUT 的初始状态 只有方式 0 是在写入控制字后输出为低,其它均为高;
2. 计数值的设置 任一种方式,只有在写入计数值后才能开始计数,方式 0 、 2 、 3 、 4 在写入计数值后,计数自动开始,方式 1 、 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 硬件触发选通 ------ 启动计数 ------
方式 功能 改变计数值0 计完最后一个数中断 立即有效1 硬件再触发单拍脉冲 外部触发后有效2 速率发生器 计数到 1后有效
3 方波速率发生器外部触发后有效计数到 0后有效
4 软件触发选通 立即有效5 硬件触发选通 外部触发后有效
4. 在计数过程中改变计数值立即有效是写入计数值后的下一个 CLK 脉冲后,新的计数值开始起作用。
5. 计数到 0 后计数器的状态
计数器减到 0 后并不停止,在方式 0 , 1 , 4 , 5 ,计数器减到 0 后从 FFFF/9999 继续计数。方式 2 , 3 是连续计数,计数器自动装入计数值后,继续计数。
七 . 8253-PIT 的编程
8253-PIT 初始化编程的步骤:
1. 写入通道控制字,规定通道的工作方式;( A1A0=11 )2. 写入计数值(由控制字的 D7D6 确定通道号)。① 若规定只写入低 8 位,则写入的为计数值的低 8 位,高8 位自动置 0 ;② 若规定只写入高 8 位,则写入的为计数值的高 8 位,低8 位自动置 0 ;③ 若是 16 位计数值,则分两次写入,先写入低 8 位,再写入高 8 位。
例 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 的应用举例
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 的方波, 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
;通道 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
例 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
;通道 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 )利用计数器锁存命令锁存现行计数值,就可从相应的计数器通道中读取计数值。
第三节 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
D7-D0
WR
RD
A1
A0
CS
CLK0
OUT0
CLK1
OUT1 译码
WR
RD
A2
A1M/ IO
A0-A7
+5V
D8-D15
GATE0
GATE1
2MHz