480 likes | 673 Views
第 7 章 可编程接口芯片及应用. 第十三讲 接口电路 2006.12.11 (星期二). 本节介绍 8253-5 定时 / 计数器接口 计数器定时器概述 8253 的工作原理 8253 的应用举例. 7.1 计数器定时器概述. 在计算机系统中往往需要一些时钟,以便实现定时控制或延迟控制,如定时扫描、定时中断、定时检测等等。 在另外一些场合往往需要计数器,以便对事件进行计数。而定时功能通常是通过计数来实现的,因此一般将两者融为一体。. 定时控制或计数事件举例. [1] 分时系统的程序切换 [2] 向外部设备输出周期性定时控制信号
E N D
第7章 可编程接口芯片及应用 第十三讲 接口电路 2006.12.11(星期二) • 本节介绍8253-5定时/计数器接口 • 计数器定时器概述 • 8253的工作原理 • 8253的应用举例
7.1 计数器定时器概述 • 在计算机系统中往往需要一些时钟,以便实现定时控制或延迟控制,如定时扫描、定时中断、定时检测等等。 • 在另外一些场合往往需要计数器,以便对事件进行计数。而定时功能通常是通过计数来实现的,因此一般将两者融为一体。
定时控制或计数事件举例 • [1]分时系统的程序切换 • [2]向外部设备输出周期性定时控制信号 • [3]定时时间到发出中断申请 • [4]外部事件统计达到规定值发出控制信号或提出中断请求
计数器和定时器的功能 • 两个方面: (1)作为计数器,在设置好计数常数(即定时初值)后,便开始减1计数,减到“0”时,输出一个信号。 (2)作为定时器,在设置好定时常数后,便进行减1计数,并按定时常数不断地输出为时钟周期整倍数的定时间隔。 两者区别是,作计数器时,在减到0以后,输出一个信号后便结束;作定时器时,不断产生定时脉冲信号。
实现定时的方法 • 主要有三种方法来实现定时功能 • 软件定时 • 不可编程的硬件定时 • 可编程的硬件定时
软件定时 • 方法: • 让机器循环执行某一条或一系列指令 • 特点: • 通过正确选取指令和合适的循环次数,便很容易实现定时功能 • 灵活方便节省费用,最简单的定时。 • CPU的利用率太低
不可编程硬件定时 • 专用的芯片: • 例如:555 • 特点: • 外接电阻R和电容C • 电路结构简单,价格便宜。 • 定时时间和范围不能由程序控制和改变
可编程硬件定时 • 方法: • 由微处理器的时钟信号提供时间基准 • 利用硬件电路和中断方法控制定时 • 定时时间和范围完全由软件来确定和改变 • 硬件部分称为可编程定时器/计数器电路 • 特点: • CPU利用率高 • 定时时间由软件设置,使用灵活方便。 • 定时精确,获得广泛应用。
8253芯片介绍 • 定时器/计数器芯片8253-5是Intel系列的定时器/计数器芯片,被广泛应用于PC机系列,提供系统定时和系统发声源。 • 同8253相兼容的芯片有8254-2等,它们的主要区别是计数频率不同。8253-5的计数频率为5MHz,而8254-2则可达10MHz。
7.2 8253的工作原理 • 主要介绍以下内容 • 8253框图 • 8253引脚信号 • 8253工作方式 • 8253编程方法
如上图所示,8253由外部数据接口、内部控制电路以及3个计数器通道所组成。如上图所示,8253由外部数据接口、内部控制电路以及3个计数器通道所组成。 • (1)数据总线缓冲器 • 这是8253和CPU数据总线的接口部件,是8位、双向、三态的缓冲器,CPU访问8253时所有数据都经过这个缓冲器传送。 • (2)读/写控制逻辑 • 这是8253内部操作的控制电路,它从系统控制线上接收输入信号,然后转变成8253内部操作的各种控制信号。
(3)控制字寄存器 • 当A1和A0都为1时,访问控制字寄存器,它从数据总线上接收CPU送来的控制字,并由控制字的D6,D7的编码决定控制字写入哪个通道的控制寄存器,由寄存在每个通道的控制字寄存器里的控制字,决定每个计数器通道的工作方式、选择计数器是按二进制或二—十进制计数、并选择每个计数器初值的写入顺序。
(4)通道0计数器、通道1计数器和通道2计数器 8253由3个同样的计数通道组成,每个计数通道都有CLK和GATE两根输入引脚和OUT一根输出引脚。从编程的角度看,每个计数通道的结构如下图所示。 外部输入到8253的CLK引脚上的时钟脉冲频率不能大于2MHz。如果大于2MHz,则必需经分频后才能送到CLK端。
A1A0引脚接线方法 1 • 8088系统的接线方法 • 只要将A1A0分别与地址总线的最低两位A1,A0相连即可。比如,在以8088为CPU的PC/XT机中,地址总线高位部分(A9~A4)用于I/O端口译码,形成选择各I/O芯片的片选信号,低位部分(A3~A0)用于各芯片内部端口的寻址。若8253的端口基地址为40H,则通道0,1,2和控制字寄存器端口的地址分别为40H,41H,42H和43H。
8253引脚信号 • 8253的3个计数通道在结构和功能上是完全一样的,每个通道都有一个时钟输入引脚CLK、一个输出引脚OUT和一个门控引脚GATE。下面介绍这3根引脚的功能。
8253引脚信号 • CLK 时钟输入引脚 • 每个通道的计数器单元CE,对CLK输入脉冲进行计数。CLK脉冲可以是系统时钟脉冲,也可以由系统时钟分频或者是其它脉冲源提供。这个输入脉冲可以是均匀的、连续的、周期精确的,也可以是不均匀的、断续的、周期不定的。 • 若8253用作分频器,工作于定时器方式时,则CLK输入是连续的、周期精确的时钟脉冲,而OUT输出必定是频率降低的、周期精确的时钟脉冲。 • 若8253用作计数器,这时要求CLK输入只是脉冲的数量,而不是脉冲的时间间隔,所以CLK可以输入周期不定的脉冲。当然也可以输入周期确定的脉冲。当计数到预置的数值后,就从OUT端输出一个脉冲。若CLK的脉冲周期不定,则OUT输出的脉冲周期也不确定。
8253引脚信号 • OUT 脉冲输出引脚 • 减1计数到零/定时时间到的脉冲输出引脚。不管8253工作于何种方式,当计数器减1计数到零时,在OUT引脚上必定有电平或脉冲信号输出。 • GATE 门控输入引脚 • 这是一根外部控制计数器工作的信号线,通常当GATA为低电平时,就禁止通道的计数单元计数。
8253控制字寄存器 • 控制字寄存器是一种只写寄存器,在对8253进行编程时,由CPU用输出指令向它写入控制字,来选定计数器通道,规定各计数器通道的工作方式,读写格式和数制。控制字的格式如下图所示。
8253控制字说明1 • SC1SC0——通道选择位 • 由于8253内部有3个计数通道,需要有3个控制字寄存器分别规定相应通道的工作方式,但这3个控制字寄存器只能使用同一个端口地址,在对8253进行初始化编程,设置控制字时,需由这两位来决定在向哪一个通道写入控制字。选择SC1SC0=00,01,10分别表示向8253的计数器通道0~2写入控制字。SC1SC0=11时无效。
8253控制字说明2 • RL1RL0——读/写操作位 • 用来定义对选中通道中的计数器的读/写操作方式。当CPU向8253的某个16位计数器装入计数初值,或从8253的16位计数器读入数据时,可以只读写它的低8位字节或高8位字节。RL1RL0组成4种编码,表示4种不同的读/写操作方式 。
读/写操作字段的定义 • RL1RL0=01,表示只读/写低8位字节数据,只写入低8位时,高8位自动置为0。 • RL1RL0=10,表示只读/写高8位字节数据,只写入高8位时,低8位自动置为0。 • RL1RL0=11,允许读/写16位数据。由于8258的数据线只有8位(D7~D0),一次只能传送8位数据,故读/写16位数据时必须分两次进行,先读/写计数器的低8位字节,后读/写高8位字节。 • RL1RL0=00,把通道中当前数据寄存器的值送到16位锁存器中,供CPU读取该值。
8253控制字说明3 • M2M1M0——工作方式选择位 • 8253的每个通道都有6种不同的工作方式,即方式0~5。当前工作于哪种方式,由这3位来选择。每种工作方式的特点、计数器的输出与输入及门控信号之间的关系等问题,将在后面作进一步介绍。
8253控制字说明4 • BCD——计数方式选择位 • 当BCD位为1时,采用BCD码计数,写入计数器的初值用BCD码表示,初值范围为0000~9999H,其中0000表示最大值10000,即104。例如,当我们预置的初值n=1200H时,就表示预置了一个十进制数1200。 • 当BCD位为0时,则采用二进制格式计数,写入计数器中的初值用二进制数表示。在程序中,二进制数可以写成16进制数的形式,所以初值范围为0000~FFFFH,其中0000表示最大值65536,即216。这时,如果我们仍预置了一个初值n=1200H,就表示预置了一个十进制数4608。
8253初始化编程步骤 • 刚接通电源时,诸如8253之类的可编程外围接口芯片通常都处于未定义状态,在使用之前,必须用程序把它们初始化为所需的特定模式,这个过程称为初始化编程。对8253芯片进行初始化编程时,需按下列步骤进行: • (1)写入控制字 • (2)写入计数初值
8253初始化编程举例 • 在某微机系统中,8253的3个计数器的端口地址分别为4E0H、4E2H和4E4H,控制字寄存器的端口地址为4E6H,要求8253的通道0工作于方式3,并已知对它写入的计数初值n=1234H,则初始化程序如下:
MOV AL,00110110B ;选择通道0,先读/写低字节 ;后高字节,方式3,二进制计数 MOV DX, 4E6H ;指向控制口 OUT DX, AL ;送控制字 MOV AL, 34H ;计数值低字节 MOV DX, 4E0H ;指向计数器(通道)0 端口 OUT DX, AL ;先写入低字节 MOV AL, 12H ;计数值高字节 OUT DX, AL ;后写入高字节
门控信号的控制功能 • 门控信号GATE在各种工作方式中的控制功能如下表所示,其中符号“—”表示无影响。 工作方式 GATE为低电平或下降沿 GATE为上升沿 GATE为高电平 方式0 禁止计数 允许计数 — 从初始值开始计数,下一 方式1 — — 个时钟后输出变为低电平 方式2 禁止计数,使输出变高 从初值开始计数 允许计数 方式3 禁止计数,使输出变高 从初值开始计数 允许计数 方式4 禁止计数 允许计数 — 方式5 从初值开始计数 — —
8253的工作方式 • 8253的每个通道都有6种不同的工作方式,现在介绍如下: • 方式0 计数结束中断方式 • 方式1 可编程单稳态输出方式 • 方式2 比率发生器 • 方式3 方波发生器 • 方式4 软件触发选通 • 方式5 硬件触发选通
9.3 8253应用举例 • 8253芯片可以用在微型机系统中,构成各种计数器、定时器电路或脉冲发生器等。使用8253时,先要根据实际需要设计硬件电路,然后用输出指令向有关通道写入相应的控制字和计数初值。也就是对8253进行初始化编程。此后8253就可以工作了。 • 由于8253的3个计数通道是完全独立的。因此可以分别对它们进行硬件设计和软件编程, 使三个通道工作于相同或不同的工作方式。
8259应用举例1 用8253产生各种定时波形 • 某个以8086为CPU的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频率为1MHz。 • 指定3个计数通道分别完成以下功能: (1)通道0工作于方式3,输出频率为2kHz的方波 (2)通道1产生宽度为480μs的单脉冲 (3)通道2方式2,输出负脉冲,时间常数为26。 • 据此设计的硬件电路如下图所示。
8253定时波形产生电路 74LS138 M/IO CLK 1MH z 方波 0 CLK A 1 G1 9 A CLK 8 2 A 8253 G2A 7 A 6 8086 Y CS A 4 G2B GATE +5V 5 0 CPU OUT 2KH z 方波 0 A C 4 A B 3 A A GATE 0 1 A A OUT 480μs宽单脉冲 2 1 1 A A 1 0 RD RD GATE 2 WR WR OUT 负脉冲 2 D ~ D D ~ D 7 0 7 0
初始化程序清单1 ;通道0初始化程序 MOV DX, 316H ;控制口地址 MOV AL, 00110111B ;通道0控制字,先读写低字节 ;后高字节,方式3,BCD计数 OUT DX, AL ;写入方式字 MOV DX, 310H ;通道0口地址 MOV AL, 00H ;低字节 OUT DX, AL ;先写入低字节 MOV AL, 05H ;高字节 OUT DX, AL ;后写入高字节
初始化程序清单2 ;通道1初始化程序 MOV DX, 316H MOX AL, 01110011B ;通道1方式字,先读写低字节 ;后高字节,方式1,BCD计数 OUT DX, AL MOV DX, 312H ;通道1口地址 MOV AL, 80H ;低字节 OUT DX, AL MOV AL, 04H ;高字节 OUT DX, AL
初始化程序清单3 ;通道2初始化程序 MOV DX, 316H MOV AL, 10010101B ;通道2控制字,只读写低字节 ;方式5,BCD计数 OUT DX, AL MOV DX, 314H ;通道2口地址 MOV AL, 26H ;低字节 OUT DX, AL ;只写入低字节
8253在PC/XT机中的应用 • 在PC/XT机中,使用8253-5作计数器/定时器电路。参看下面的电路连接图。 • 三个计数通道的用途分别如下: • 计数通道0---实时时钟 • 计数通道1---动态RAM刷新定时器 • 计数通道2---扬声器音调控制
DACK BR D 0 GATE +5V 0 GATE IRQ PB 1 OUT 0 0 GATE 0 到8259A 2 +5V 从8255A-5来 8253-5 U26 S DRQ CLK D Q D D Q 0 0 到8237A-5 CLK 74LS175 74LS175 1 启动DMA CLK U21 U21 2 C Q PCLK C OUT 1 CLR 2.38636MH z IOR RD IOW WR RESETDRV CS T/C CS A A 1 1 OUT T/C2 0UT A A 2 0 0 到扬声器接口电路 D ~D D ~D 7 0 7 0 8253在PC/XT机中的接线图
思考: 1。熟悉课上8253的应用例题 2。设计电路,用8253 产生10Hz的方波,输入时钟为1MHz