8253芯片
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 在计数过程中改变计数值 立即有效是写入计数值后的下一个CLK脉冲后,新的计数值开始起作用。
方式 功能 改变计数值 0 计完最后一个数中断 立即有效 1 硬件再触发单拍脉冲 外部触发后有效 2 速率发生器 计数到 1 后有效 外部触发后有效 3 方波速率发生器 计数到 0 后有效 4 软件触发选通 立即有效 5 硬件触发选通 外部触发后有效
CLK0 GATE0 OUT0 CLK1 GATE1 OUT1
* 数据线(D7~D0) * 地址线:选择内部寄 存器; * 控制线:完成片选和 读写操作。 CLK:输入脉冲线; GATE:门控信号输入线; GATE=0 禁止计数, GATE=1 允许工作; OUT:输出引脚; 当计数到“0”时,OUT 端输出一信号。
六. 8253工作方式小结 1. 输出端OUT的初始状态 只有方式0是在写入控制字后输出为低,其它均为高;
2. 计数值的设置 任一种方式,只有在写入计数值后才能开始计数, 方式0、2、3、4在写入计数值后,计数自动开始,方 式1、5需外部触发,才开始计数。
计数值N与输出波形的关系
方式 0 1 2 功能 计完最后一个数中断 硬件再触发单拍脉冲 速率发生器 N 与输出波形的关系 写入计数值 N 后,经过 N+1 个 CLK 脉冲输出变高 单拍负脉冲的宽度为 N 个 CLK 脉冲 脉冲, N 个 CLK 脉冲,输出宽度为一个 CLK 周期的负脉冲 高电平, 低电平( 写入 N 后,输出 N /2 个 CLK 高电平,N /2 个 CLK 低电平(N 为 偶数)(N+1 高电平, (N 低电平( 偶数)(N+1)/2 个 CLK 高电平, N-1)/2 个 CLK 低电平(N 为 ; N+1) ( 奇数) 奇数) CLK, 写入 N 后,过 N+1 个 CLK,输出宽度为一个 CLK 的负脉冲
2、 Intel8253-PIT的应用举例 例1:某8253端口地址为F8H~FBH,欲用通道0以方式1,按 BCD计数,计数值为5080。 0 0 1 1 0 0 1 1 1.确定通道控制字;
2.计数值的低8位为80; 3.计数值的高8位为50。
初始化程序为: MOV OUT MOV OUT MOV OUT AL,33H 0FBH,AL AL,80H 0F8H,AL AL,50H 0F8H,AL
RD WR A0 A1 数据总线 缓冲 器 计数器 0
CLK0 GATE0 OUT0 CLK1 GATE1 OUT1
读/写 逻辑
计数器 1
CS
控制字 寄存器 计数器 2
CLK2 GATE2 OUT2
8253内部结构
三.8253 的引线
内部数据总线
数据总线 缓冲 器 计数器 0
D7 ~ D0
RD WR A0 A1
可编程定时/计数器8253及其应用
第一节 Intel8253-的工作原理 一. 8253的功能 计算机系统中,实现定时或延时有三种方法:软 件定时、不可编程的硬件定时、可编程的硬件定时器。 8253为可编程的硬件定时/计数器。 1. 主要功能 * 具有3个独立的16位计数器通道; * 每个计数器均可按二进制或二—十进制计数; * 每个计数器的计数速率高达2MHz; * 每个通道有6种工作方式,可由程序设置和改变; * 所有的输入输出都与TTL兼容。
例:要求计数器0工作于方式3,输出方波的频率为2KHz,计数 脉冲的频率为2.5MHz,采用BCD计数,试写出初始化程序段。 1. 8253的端口地址为:80H,81H,82H,83H。 2. 常数计算:TC = 2.5MHz/2KHz=1250 3. 8253的方式控制字为: 00 11 4. 初始化程序段: MOV OUT MOV OUT MOV OUT AL,37H 83H,AL AL,50H 80H,AL AL,12H 80H,AL 011 1
二. 8253的内部结构
内部数据总线
*数据总线缓冲器(传送信息)
写控制字, 写时常, 读计数值 *读写逻辑 *控制字寄存器(存放控制字) *三个计数器(减法器) 3个独立的16位减法器, 可作定时/计数器使用; 计数器按二/BCD方式减 法计数,从预常减到零时, OUT端输出一信号。
D7 ~ D0
LSB=2
3
2
1
2
1
0
FF
* 计数器只计数一遍; * OUT是N+1个CLK后变低; * 计数过程中,GATE=0, 计数暂停; * 若在计数过程中,改变计 数值,则按新的计数值重新 开始计数。
方式5(硬件触发选通) * 写入控制字OUT=1; * 写入常数后,由GATE 的上升沿启动计数; * 计数到0,OUT=0; * 一个CLK周期后, OUT=1,计数器停止计数。
方式4(软件触发选通)
CW=18 * 写入控制字OUT=1; WR * 写入常数立即对CLK计数; CLK * 计数到0,OUT=0; GATE=1 * 一个CLK周期后,OUT=1, OUT 计数器停止计数。 LSB=3
3
2
1
0
Leabharlann Baidu
FF
FE
FD
CW=18 WR CLK GATE=1 OUT
LSB=3
读/写 逻辑
计数器 1
CS
控制字 寄存器 计数器 2
CLK2 GATE2 OUT2
8253内部结构
8253输入信号组合的功能表
CS RD WR A1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 * 0 0 0 0 1 1 1 1 * 0 0 1 1 0 0 1 1 *
A0 寄存器选择和操作 0 1 0 1 0 1 0 1 * 写入计数器 0 写入计数器 1 写入计数器 2 写入控制寄存器 读计数器 0 读计数器 1 读计数器 2 无操作(三态) 禁止(三态)
方式1——可重复触发的单稳态触发器 方式1——可重复触发的单稳态触发器 * 写入控制字OUT=1, 写入常数不计数; * GATE启动计数, OUT=0; * 计数到,OUT=1。
CW=12 WR CLK LSB=3
二. 8253-PIT的工作方式
GATE OUT 3 2 1 0 FF 3
CW=12 WR
LSB=3
*单拍脉冲宽度为N; *由GATE重新启动; *计数中,可重新启动;
二. 8253-PIT的工作方式 CLK
GATE OUT 3 2 1 3 2 1 0
*计数中,可改变计数 值,再次启动有效。
方式2——频率发生器 方式2——频率发生器 * 写入控制字OUT=1; * 写入常数立即对CLK计数; * 计数到1,OUT=0; * 一个CLK周期后,OUT=1, 重新计数。
5.计数到0后计数器的状态 计数器减到0后并不停止,在方式0,1,4,5,计数器减到0后从 FFFF/9999继续计数。方式2,3是连续计数,计数器自动装入计数值后, 继续计数。
七. 8253的编程 8253-PIT初始化编程的步骤: 1.写入通道控制字,规定通道的工作方式;(A1A0=11) 2. 写入计数值(由控制字的D7D6确定通道号)。 ①若规定只写入低8位,则写入的为计数值的低8位,高8位 自动置0; ②若规定只写入高8位,则写入的为计数值的高8位,低8位 自动置0; ③若是16位计数值,则分两次写入,先写入低8位,再写入 高8位。
74LS138 A9 A8 A7 A6 A5 M/IO A4 A3 A0 A2 A1 RD WR G1 G2A G2B C Y4 B A CLK0 CLK1 CLK2 GATE0 CS OUT0 GATE1 OUT1 1MHz方波
5V 2KHz方波
8086 CPU
D7—D0
A1 A0 1ms的负脉冲 RD WR GATE2 OUT2 D7—D0 单脉冲
方式3——方波发生器 方式3——方波发生器 * 与方式2的区别在于:输出
为周期是N个CLK脉冲的方波。 * 若计数值为偶数,每个CLK 使计数值减2,计到0,OUT改 变状态,重装计数值开始新的 计数。
CW=16 WR CLK GATE=1 OUT 4 2 4 2 4 2 4 2 LSB=4
*若计数值为奇数,第一个脉冲先减1,以后,每个CLK使计数值减2,计
到0 时,OUT改变状态,重装计数值后,第一个脉冲减3,以后,每个 CLK使计数值减2,计到0时,OUT改变状态。
CW=16 WR CLK GATE=1 OUT 5 4 2 5 2 5 4 2 5 2 LSB=5
*GATE信号控制计数过程; *计数过程中写入新的计 数值将在半周期结束时装 入计数器。
四. 8253-PIT的控制字 在8253的初始化编程中,由CPU向8253的控制字寄存 器写入一个控制字来规定8253的工作方式。 D7 D6 D5 D4 D3 D2 D1 D0 数制
计数器 读/写格式
00 01 10 11 选择计数器0 选择计数器1 选择计数器2 非法选择
工作方式
0=二进制 1=BCD 000 001 *10 *11 100 101 方式0 方式1 方式2 方式3 方式4 方式5
例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。
CW=10 WR CLK GATE=1 OUT 4 3 2 1 0 FF LSB=4
CW=10 WR CLK GATE
LSB=3
OUT 置置置 3 2 2 2 1 0 FF
* 计数器只计数一遍; * OUT是N+1个CLK后变高; * 计数过程中,GATE=0, 计数暂停; * 计数过程中可改变计数 值; * 8253无中断控制,可用 OUT信号作为中断请求。
在计数过程中,8253读计数器现行值的方法: (将计数值存入内部锁存器) MOV OUT IN MOV IN MOV AL,03H ;计数器0的锁存命令 0FBH,AL;写入控制寄存器 AL,0F8H ;读低8位 CL,AL ;存入CL中 AL,0F8H ;读高8位 CH,AL ;存入CH中
例2:用8253产生各种定时波形。
CW=14 WR CLK GATE=1 OUT 3 2 1 3 2 1 3 LSB=3
CW=14 WR CLK GATE
LSB=3
* 通道连续工作不需重置时 常; * 计数过程中,GATE=0, 计数暂停,GATE变高后重 新计数; * 计数过程中可改变计数值; 新的计数值在下一次有效。
OUT 3 2 2 3 2 1 3
00 计数器锁存命令 10 只读/写最高有效字节(高八位) 01 只读/写最低有效字节(低八位) 11 先读写最低有效字节然后读写 最高有效字节
五. 8253的工作方式 方式0——计数结束中 方式0——计数结束中 断 * CW写入,OUT=0; * 写入时常,通道开始计数; * 计数到零,OUT=1;
CW=1A WR CLK GATE OUT 3 2 3 2 1 0 FF LSB=3
CW=1A WR CLK GATE OUT 3 2 1 0 FF 3 LSB=3
* 计数器只计数一次; * OUT是N+1个CLK后变低; * 在 计数过程中出现的GATE脉 冲, 将使 计数器重新开始计数, 对输出状态没有影响; * 若在计数过程中改变计数值, 只要没有GATE信号触发,不影 响计数过程。有新的GATE信号 触发则按新的计数值开始计数。
方式 0
功
能
GATE 低或变为低
禁止计数
上升沿
___
高
允许计数
计完最后一个数中断 硬件再触发单拍脉冲
1
-----
①启动计数 ②下一个 CLK 脉冲 使输出变低
-----
2 3 4 5
速率发生器 方波速率发生器 软件触发选通 硬件触发选通
①禁止计数 ①重新装入计数值 允许计数 ②立即使输出为高 ②启动计数 ①禁止计数 启动计数 允许计数 ②立即使输出为高 禁止计数 允许计数 ---------启动计数 ------
3
方波速率发生器
4
软件触发选通
5
硬件触发选通
CLK, 门控触发后过 N+1 个 CLK,输出宽度为一个 CLK 的负脉冲
3. 门控信号的作用-----GATE输入总是在CLK输入时钟的上 升沿被采样。在方式0,2,3,4中,GATE输入是电平起作 用。在方式1,2,3,5中 GATE输入是上升沿起作用的。