8253的工作方式_第1页
8253的工作方式_第2页
8253的工作方式_第3页
8253的工作方式_第4页
8253的工作方式_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8253 的工作方式 1.方式 0 计数结束产生中断 8253 用作计数器时一般工作在方式 0。所谓计数结束产生中 断,是指在计数值减到 0 时,输出端(OUT)产生的输出 信 号可作为中断申请信号,要求 CPU 进行相应的处理。方式 0 有如下特点: 当控制字写进控制字寄存器确定了方式 0 时,计数器的 输出(OUT 端口)保持低电平,一直保持到计数值减 到 0。 计数初值装入计数器之后,在门控 GATE 信号为高电平时 计数器开始减 1 计数。当计数器减到 0 时输出端 OUT 才由低 变高,此高电平输出一直保持到该计数器装入新的计数值或 再次写入方式 0 控制字为止。若要使用中断,可以计数到 0 的输出信号向 CPU 发出中断请求,申请中断。 GATE 为计数控制门,方式 0 的计数过程可由 GATE 控制 暂停,即 GATE=1 时,允许计数;GATE=0 时,停止计 数。 GATE 信号的变化不影响输出 OUT 端口的状态。 计数过程中,可重新装入计数初值。如果在计数过程中, 重新写入某一计数初值,则在写完新计数值后,计数器将从 该值重新开始作减 1 计数。 2.方式 1 可编程的单拍负脉冲 可编程的单拍负脉冲又称为单稳态输出方式,简称单稳定时。 方式 1 的特点是: CPU 写入控制字后,计数器输出 OUT 端为高电平作为起 始电平,在写入计数值后计数器并不开始计数 (不管此时 GATE 是高电平还是低电平),而要由外部门控 GATE 脉冲上 升沿启动,并在上升沿之后的下一个 CLK 输 入脉冲的下降 沿开始计数。 GATE 上升沿启动计数的同时,使输出 OUT 变低,每来一 个计数脉冲,计数器作减一计数,直到计数减为 0 时,OUT 输出端再变为高电平。OUT 端输出的单拍负脉冲的宽度为计 数初值乘以 CLK 端脉冲周期。设计数初值为 N,则单拍脉冲 宽度为 N 个 CLK 时钟脉冲周期。 如果在计数器未减到 0 时,GATE 又来一触发脉冲,则由 下一个时钟脉冲开始,计数器将从初始值重新作 减 1 计数。 当减至 0 时,输出端又变为高电平。这样,使输出脉冲宽度 延长。 3. 方式 2 分频脉冲发生器 方式 2 是一种具有自动予置计数初值 N 的脉冲发生器。从 OUT 端可以输出连续脉冲信号,脉冲宽度等于时钟脉冲周期, 而计数初值 N 决定了输出端两个负脉冲之间的宽度即输出脉 冲周期。方式 2 也叫 N 分频器,因为输出脉冲为输 入脉冲 的 N 分频,即出现 N 个输入脉冲才输出一个脉冲。方式 2 有 如下特点: N 分频计数器,这种方式是输出对输入脉冲按计数器计 数初值 N 分频后的连续脉冲。 当 CPU 写入控制字后 OUT 端输出为高电平作为起始电平, 在写入计数值 N 后将立即自动开始对输入脉冲 CLK 计数, 输出端仍一直为高;当计数器减到 1 时,输出变低,计数器 减到 0 时又变为高,计数器重新按已写入的计数 值 N 继续 计数,周而复始,在 OUT 端输出一个 N 分频脉冲,其正脉搏 冲宽度为(N-1)个输入脉冲时钟周期(是 N 个 CLK 时钟脉 冲周期之和),而负脉冲输出宽度(持续时间)是一个 CLK 脉冲周期。 GATE 用于控制计数,GATE=1,允许计数;GATE=0,停止 计数。因此,可以用 GATE 来使计数器同步。 在方式 2 下,不但高电平的门控信号有效,上升跳变的 门信号也是有效的。 4. 方式 3 分频方波发生器 方式 3 的特点是: 方式 3 常用于波特率发生器。方式 3 和方式 2 类似。但 输出为方波或近似方波的矩形波。 写入方式 3 控制字后输出为高电平。写入计数值后计数 器自动开始对输入 CLK 脉冲计数,输出 OUT 仍保持为高;在 计数完成一半时,输出 OUT 变为低电平,直到计数器全部完 成,输出 OUT 又变为高电平,并重复上述计数过程 。 若计数值 N 为偶数时,OUT 方波的占空比为 1:1;若 N 为奇数,其占空比为:(N+1)/2:(N-1)/2 即输出分频 波高电平宽度为(N+1)/2 CLK 周期,低电平周期为(N- 1)/2 CLK 周期。 5. 方式 4 软件触发选通脉冲发生器 方式 4 是类似于方式 0 的工作方式,计数器是靠置入新的计 数初值这个软件操作来触发计数器工作的,故称为软件触发。 方式 4 有如下特点: 方式 4 是靠写入计数值来进行软件触发的“一次性有效” 的选通脉冲发生器。写入控制字后输出端 OUT 变为高,并一 直保持。在写入计数初值之后开始计数,当计数到 0 时输出 端 OUT 变为低,维持一个 CLK 周期后又恢复为 高,并一直 保持为高,直到再次写入计数来进行“软件触发”才能再次 开始。 若 GATE=1,允许计数;GATE=0,停止计数。 方式 4 的负脉冲输出常作为选通脉冲。 6. 方式 5 硬件触发选通脉冲发生器 方式 5 有如下特点: 方式 5 类似于方式 4,所不同的是 GATE 端输入信号的作 用不同。方式 5 是硬件触发,是在外部硬件发出门控 信号 后才发生的。 方式 5 是靠门控脉冲 GATE 的上升沿来进行触发的选通脉 冲发生器。写入控制字后输出端 OUT 为高,这是初始电平; 写入计数值后计数器并不开始计数,而要由门控脉冲 GATE 上升沿触发后才开始计数,计数到 0 输出由高变低,一个 CLK 时钟周期后又恢复为高,并一直保持,直到下次门控脉 冲触发再次开始计数。 在此方式中,计数器可重新触发,在任何时候,当 GATE 信号的上升沿到来,将把计数初值重新送入计数器,然后开 始计数过程。 8253 的控制字 SC1,SC 0计数通道选择位。由于 8253 内部 3 个计数 通道各有一个 8 位的控制字寄存器,而这三个控制字寄存 器 共用同一个控制端口地址,所以控制字中设置 SC1,SC 0 这两位来确定 CPU 当前发出的控制字是写入哪 个计数通道的控制字寄存器中。具体选择如图. RL1,RL 0读/写操作方式位。这两位用来确定对选中的 计数通道进行读/写操作方式。当 CPU 对 8253 进行 16 位 读/写操作时,可以只读/ 写高 8 位或只读/写低 8 位,也可以 读/写 16 位。读 /写 16 位时,先读/写低 8 位,后读/写高 8 位,具体是哪种操作方式由 RL1,RL 0 这两位的编码确定。 由于 8253 的数据线只有(D 7D 0) ,一次只能传送 8 位数 据,故传送 16 位数据时,要分两次进行。 M2,M 1,M 0工作方式择位。8253 的每个计数通道有 6 种不同的工作方式,即方式 0 到方式 5,M 2M1M0 这三类 就是用来选择具体的工作方式,具体选择如图。 BCD计数方式选择位。8253 的每个计数通道有两种计 数方式按二进制计数或按十进制(BCD 码)计数。BCD 位 用来具体确定采用哪种计数方式。 例:若选择计数器 1,工作在方式 3,计数初值为 588H(2 个字节)采用二进制计数,则其控制字为: 01110110=76H,设控制口地址为 043H,则将该控制字写 入控制字寄存器的指令如下: MOV AL,076H OUT 043H,AL 8253 的初始化编程内容:一是首先向控制寄存器写入控 制字,以选定计数通道(三个中之一),规定该计数的工 作方式和计数方式以及计数初值的长度和装入顺序(初值 写入方式);二是向已选定的计数器按控制字的要求 写入 计数初值。 8253 初始化的要求: (1)对每个计数器,控制字必须写在计数值之前。这是因 为计数器的读/写格式由它的控制字决定。 (2)计数值必须按控制字所规定的格式写入。若控制字规 定只写 8 位,只需写入一次(8 位)计数值即可(规定写低 8 位则高 8 位自动置 0,规定写高 8 位则低 8 位自动置 0); 规定写 16 位时必须写两次,先写低 8 位,后写高 8 位。当 初值为 0 时,也要分两写入,因在二进制计数时,“0”表 示 65336,在 BCD 码计数时“0”表示 10000=104。 (3)对所有方式计数器都可以在计数过程中或计数结束后 改变计数值,重写计数值也必须遵守控制字所规定的格式, 并且不会改变当前计数器的工作方式。 (4)计数值不能直接写到减 1 计数器中,而只能写入计数 值寄存器中,并由写操作 之后的下一个 CLK 脉冲将计数 值寄存器的内容装入减 1 计数器开始计数。 (5)初始化编程必须明确各个计数器的控制字和计数值不 是写到同一个地址单元。各个计数器的控制字各自独立确 定,但它们都写入同一个端口地址(控制字寄存器)中, 各个计数器的计数值则根据需要独立确定并写入各自 计数 器的相应寄存器中。 例 1:设 8086 系统中 8253 的三个计数器的端口地址为 060H,062H 和 064H,控制口地址为 066H,要求计数器 0 为 方式 1,按 BCD 计数;计数初值为 1800D,计数器 1 为方式 0,按二进制计数;计数初值为 1234H,计数器 2 为方式 3,按二进制计数;当计数初值为 065H 时,试分别写出计 数器 0,1,2 的初始化程序。 计数器 0 的初始化: 计数 0 的控制字:00100011B=23H MOV AL,23H ;计数器 0 的控制字 OUT 0 66H,AL ;控制字写入 8253 的控制器 MOV AL,18H ;取计数初值的高 8 位,低 8 位 00 可不送 OUT 060H,AL ;计数初值送计数器 0 端口 计数器 1 和初始化: 计数器 1 的控制字:01110000B=70H MOV AL,70H ;计数器的控制字:方式 0,送高 8 位和低 8 位,二进制计数 OUT 066H,AL ;控制字写入 8253 的控制器 MOV AL,034H ;取计数初值的低 8 位 OUT 062H,AL ;计数初值的低 8 位,写入计数器 1 端口 MOV AL, 12H ;取计数初值的高 8 位 OUT 062H,AL ;计数初值的高 8 位写入计数器 1 端口 计数器 2 的初始化: 计数器 2 的控制字:10010110B=96H MOV AL,96H ;计数器 2 的控制字 96H:方式 3,只送低 8 位,二进制计数 OUT 066H,AL ;控制字写入 8253 的控制口 MOV AL,056H ;计数初值的低 8 位 OUT 064H,AL ;计数初值的低 8 位写入计数器 2 的端口 例 2:要求读出计数器 2 的当前计数值,并检查是否为全 “1”。 8253 在读取计数器的当前计数值时,必须分两步进行。首 先发一锁存命令(即控制字中 RL1RL0=00),将当前计数 值锁存到输出锁存器中。第二步执行读操作,即用 IN 指令 将锁存器中内容读入 CPU。 假设计数初值只有低 8 位,设其程序段如下(控制口地址 为 066H,计数器 2 的口地址为 064H): KEEP:MOV AL,80H ;计数器 2 的锁存命令 OUT 066H,AL ;锁存命令写入控制寄存器 IN AL,064H ;读输出锁存器中的当前计数值(从计数器 2 端口读) CMP AL,0FFH ;比较当前计数值是否为全“1” JME KEEP ;非全“1”继续读 HLT ;为全“1”暂停 8253 的应用举例 例 1:将 8253 的计数器 1 作为 5ms 定时器,设输入时钟频 率为 200kHz,试编写 8253 的初始化程序。 (1)计数初值 N 计算 已知输入时钟 CLK 频率为 200kHz,则时钟周期为 T=1/f=1/200kHz=5s,于是计数初值 N 为: N=5ms/T=5ms/5s=1000。 (2)确定控制字 按题意选计数器 1,按 BCD 码计数,工作于方式 0,由于计 数初值 N=1000,控制字 D5D4应为 11,于是 8253 的控制字 为:01110001B=71H。 (3)选择 8253 各端口地址 设计数器 1 的端口地址为 3F82H,控制口地址为 3F86H。 (4)初始化程序如下 MOV AL,71H ;控制字 MOV DX,3F68H ;控制口地址 OUT DX,AL ;控制字送 8253 控制寄存 器 MOV DX,3F82H ;计数器 1 端口地址 MOV AL,00 ;将计数初值 N=1000 的低 8 位写入计数器 1 OUT DX,AL MOV AL,10 ;将 N 的高 8 位写入计数器 1 OUT DX,AL 例 2:以 8086 为 CPU 的某微机系统中使用了一块 8253 芯片, 其通道端口地址为 308H, 30AH,30CH,控制口地址为 30EH,3 个通道使用同一输入时钟,频率为 2MHz,要求完 成如下功能: 利用计数器 0 采用硬件触发,输出宽度等于时钟周期的单 脉冲,定时常数为 36H; 利用计数器 1 输出频率为 2kHz 的对称方波; 利用计数器 2 产生宽度为 06ms 的单脉冲, 试设计该定时系统硬件电路和初始化程序。 (1)硬件电路设计 硬件电路设计主要是地址译码电路设计及时 8253 与 CPU 间 的连接。根据给定的端口地址可知,地址总线低位部分的 A9A 0分别为: A9A8=11,A 7A 4=0000,A 3A2A1=100111,A0=0,由它们经 译码器译码产生 8253 的片选信号 , 8253 的数据线 D7D 0必须与系统数据总线的低 8 位相连,8253 的端口的 选择信号 A1A0 应连系统地址的 A2A1。根据上 述要求,译 码器应选 3-8 译码器 74LS138。该译码器有 3 个代码输入端 (C,B,A),输入 3 位代码决定译码信号从 Y 0Y 7中哪一 个输出,本例中显然应以 Y2 输出。 (2)初始化编程 根据题意要求,对 3 个通道的工作方式,计数初值确定如 下: 由 CLK0CLK 2=2MHz 可得,时钟周期 T=1/f=1/2MHz=05s。 选计数器 0:选择方式 5,门控信号 GATE 应接一正跳变信 号,OUT 端当计数为 0 时产生一个宽度等于时钟周期的单脉 冲。计数系数为 36,用 BCD 计数。所以,计数器 0 的控制 字应为 00011011B=1BH。 选计数器 1:选择方式 3,GATE 按+5V,CLK1=2MHz 输出方 波频率为 2kHz,所以,计数常数 N1=2MHz/2kHz=1000,采用 BCD 计数,于是计数器 1 的控制字为:01110111B=77H。 选计数器 2:选择方式 1,以构成一个单稳态电路,输出脉 冲宽度由计数常数 N2 决定,计数常数 N2=600s/0 5s=1200,采用 BCD 计数,于是计数器 2 的控制字为: 10110011B=B3H。 根据以上分析可得 3 个计数通道的初始化程序如下。 计数通道 0 的初始化程序: MOV DX,30EH ;8253 的控制口地址

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论