第六章 微机接口技术2.ppt
6.3 定时 /计数器芯片 8253/8254 n 在微机系统或智能化仪器仪表的工作过程中,经常需 要使系统处于定时工作状态,或者对外部过程进行计 数。定时或计数的工作实质均体现为对脉冲信号的计 数,如果计数的对象是标准的内部时钟信号,由于其 周期恒定,故计数值就恒定地对应于一定的时间,这 一过程即为定时,如果计数的对象是与外部过程相对 应的脉冲信号(周期可以不相等),则此时即为计数 。 n 在计算机系统中经常要用到定时信号,如动态存储器 的刷新定时、系统日历时钟的计时,系统定时中断以 及喇叭的声源等都是用定时信号来产生的。 定时信号可以是软件定时和硬件定时。硬件定时又可分为不 可编程的硬件定时和可编程的硬件定时两种 。 (1).硬件法。 硬件定时主要指用单稳延时电路或计数电路来 实现延时和定时。可编程定时 /计数方法的优点是定时或 计数时,不占用 CPU空间。 特点是需要花费一定硬设备, 而且当电路制成之后,定时值及计数范围不能改变。 (2).软件法。 软件定时是根据所需要的时间常数来设计一个 延迟子程序 , 无需太多的硬设备,控制比较方便,但在定 时期间, CPU不能从事其它工作,降低了机器的利用率。 (3).软、硬件结合法,即设计一种专门的具有可编程特性的 芯片,来控制定时和计数的操作,而这些芯片,具有中断 控制能力,定时、计数到时能产生中断请求信号,因而定 时期间不影响 CPU的正常工作。 一、 8253的功能概述 n 每个 8253芯片有 3个独立的 16位计数器通道 n 每个计数器通道都可以按照二进制或二 — 十进制 计数 n 每个计数器的计数速率可以高达 2MHz n 每个通道有 6种工作方式,可以由程序设定和改变 n 所有的输入、输出电平都与 TTL兼容 二、 8253内部结构和引脚功能 n 1)内部结构 2) 8253的外部引脚 8253芯片的 24个引脚分为两组,一组面向 CPU,另 一组面向外部设备,如下: n D7~D0:双向、三态数据线引脚,用以与系统的 数据线连接,传送控制、数据及状态信息。 n RD:来自于 CPU的读控制信号输入引脚,低电平 有效。 n WR:来自于 CPU的写控制信号输入引脚,低电 平有效。 n CS:芯片选择信号输入引脚,低电平有效 n VCC及 GND: +5V电源及接地引脚 n A1、 A0:地址信号输入引脚,一般接 CPU地址总线 的 A1、 A0位,用以选择 8253芯片的通道及控制字寄 存器。、的状态与 8253端口地址的对应关系 000#通 道 011#通道 102#通道 11控制端口 n CLKi: i=0,1,2,第 i个通道的计数脉冲输入引脚, 8253 规定,加在 CLK引脚的输入时钟信号的频率不得高于 2.6MHZ,即时钟周期不能小于 380ns。 n GATEi: i=0,1,2,第 i个通道的门控信号输入引脚,门 控信号的作用与通道 的工作方式有关。 n OUTi: i=0,1,2,第 i个通道的定时 /计数到信号输出引脚 ,输出信号的形式 由通道的工作方式确定,此输出 信号可用于触发其它电路工作,或作为向 CPU发出 的中断请求信号。 3. 8253的端口寻址 三、 8253的编程命令 8253的三个计数器在工作前必须分别进行初始化编程。每个 计数器的编程步骤均由写入控制字开始,选定一种工作方 式,然后写入计数初值。 8253的编程主要包括设置控制字 、赋初值、发锁存命令和读计数值。 1) 设置控制字 2) 赋初值, 设置控制字后,按规定给计数器赋初值。 3.锁存命令。在读计数值时,应先用锁存命令将计数器当 前的计数值在锁存器中锁定,然后再加以读取。目的是为 了获取正确的当前计数值。锁存器的输出会随计数执行部 件的内容而变化,当计数器收到一个锁存命令时,锁存器 的输出将保持当前的计数值不再发生变化。 4. 读计数值。读计数值即 CPU通过执行输入指令来获取当前 计数值。读计数值时,必须符合控制字的有关规定,即只 读低位字节还是只读高位字节或高低位字节都读。 1.8253控制字 2 初始化编程 n 要使用 8253,必须首先进行初始化编程,初始化编程包括 设置通道控制字和送通道计数初值两个方面,控制字写入 8253的控制字寄存器,而初始值则写入相应通道的计数寄 存器中。 n 初始化编程包括如下步骤: n (1).写入通道控制字,规定通道的工作方式 n (2).写入计数值,若规定只写低 8位,则高 8位自动置 0, 若规定只写高 8位,则低 8位自动置 0。若为 16位计数值则 分两次写入,先写低 8位,后写高 8位。 n D0:用于确定计数数制, 0,二进制; 1, BCD码 3 、 8253的锁存命令 四、 8253的工作方式 n 1.方式 0— 计数结束产生中断 n 当控制字写入控制字寄存器后,输出 OUT就变低,当 计数值写入计数器后开始计数,在整个计数过程中, OUT保持为低,当计数到 0后, OUT变高; GATE的 高低电平控制计数过程是否进行。 n ① 计数器只计一遍,直到输入一新的计数值, OUT才变低,开始新的计数; n ② 计数值是在写计数值命令后经过一个输入脉冲 ,才装入计数器的,下一个 脉冲开始计数,因 此,如果设置计数器初值为 N,则输出 OUT在 N+ 1 脉冲后才能变高; n ③ 在计数过程中, GATE信号控制暂停。当 GATE= 0时,暂停;当 GATE= 1时,继续计数 n ④ 在计数过程中可以改变计数值,且这种改变是 立即有效的 . n 2.方式 1— 可编程的硬件触发单拍脉冲 n CPU向 8253写入控制字后 OUT变高,并保持,写入 计数值后并不立即计数,只有当外界 GATE信号启动 后(一个正脉冲)的下一个脉冲才开始计数, OUT变 低,计数到 0后, OUT才变高,此时再来一个 GATE 正脉冲,计数器又开始重新计数,输出 OUT再次变低 ,因此输出为一单拍负脉冲。 n ① 输出 OUT业宽度为计数初值的单脉冲; n ② 输出受门控信号 GATE的控制,分三种情况: q 计数到 0后,再来 GATE脉冲,则重新开始计数, OUT 变低; q 在计数过程中来 GATE脉冲,则从下一 CLK脉冲开始重 新计数, OUT保持为低; q 改变计数值后,只有当 GATE脉冲启动后,才按新值计 数,否则原计数过程不受影响,仍继续进行,新值的改 变是从下一个 GATE开始的。 n ③ 计数值是多次有效的,每来一个 GATE脉冲,就自动装 入计数值开始从头计数,因此在初始化时,计数值写入一 次即可。 n 3、方式 2— 速率发生器 n CPU输出控制字后,输出 OUT就变高,写入计数值 后的下一个 CLK脉冲开始计数,计数到 1后,输出 OUT变低,经过一个 CLK以后, OUT恢复为高,计 数器重新开始计数,输出连续相同间隔的负脉冲( 前提: GATE保持为高),即周期性地输出, n ① 通道可以连续工作; n ② GATE可以控制计数过程,当 GATE为低时 暂停计数,恢复为高后重新从初值;(注意: 该方式与方式 0不同,方式 0是继续计数) n ③ 重新设置新的计数值即在计数过程中改变计 数值,则新的计数值是下次有效的,同方式 1 。 n 4.方式 3— 方波速率发生器 n 这种方式下的输出与方式 2都是周期性的,不同的是周期 不同, CPU写入控制字后,输出 OUT变高,写入计数值后 开始计数,不同的是减 2计数,当计数到一半计数值时, 输出变低,重新装入计数值进行减 2计数,当计数到 0时, 输出变高,装入计数值进行减 2计数,循环不止 ① 通道可以连续工作; ② 关于计数值的奇偶,若为偶数,则输出标准方波,高低电 平各为 N/2个;若为奇数,输出有( N+ 1) /2个 CLK个高 电平,( N- 1) /2个 CLK个低电平; ③ GATE信号能使计数过程重新开始,当 GATE= 0时,停止 计数,当 GATE变高后,计数器重新装入初值开始计数, 尤其是当 GATE= 0时,若 OUT此时为低,则立即变高, 其它动作同上; ④ 在计数期间改变计数值不影响现行的计数过程,新的计数 值是在现行半周结束后才装入计数器。但若中间遇到有 GATE脉冲,则在此脉冲后即装入新值开始计数。 n 5.方式 4— 软件触发的选通信号发生器 n 当 CPU写入控制字后, OUT立即变高,写入计数值开 始计数,当计数到 0后, OUT变低,经过一个 CLK脉 冲后, OUT变高,这种计数是一次性的(与方式 0有 相似之处),只有当写入新的计数值后才开始下一次 计数。