8253原理及应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章可编程定时器/计数器8253及其应用
【回顾】可编程芯片的概念,端口的概念。
【本讲重点】定时与计数的基本概念及其意义,定时/计数器芯片Intel8253的性能概述,
内、外部结构及其与CPU的连接。
8.1定时与计数
1.定时与计数
在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工作状态,或者对外部过程进行计数。定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时,如果计数的对象是与外部过程相对应的脉冲信号(周期可以不相等),则此时即为计数。
2.定时与计数的实现方法
(1)硬件法
专门设计一套电路用以实现定时与计数,特点是需要花费一定硬设备,而且当电路制成之后,定时值及计数范围不能改变。
(2)软件法
利用一段延时子程序来实现定时操作,特点,无需太多的硬设备,控制比较方便,但在定时期间,CPU不能从事其它工作,降低了机器的利用率。
(3)软、硬件结合法
即设计一种专门的具有可编程特性的芯片,来控制定时和计数的操作,而这些芯片,具有中断控制能力,定时、计数到时能产生中断请求信号,因而定时期间不影响CPU的正常工作。
8.2定时/计数器芯片Intel8253
Intel8253是8086微机系统常用的定时/计数器芯片,它具有定时与计数两大功能。
一、8253的一般性能概述
1.每个8253芯片有3个独立的16位计数器通道;
2.每个计数器通道都可以按照二进制或二—十进制(BCD码)计数;
3.每个计数器的计数速率可以高达2MHz;
4.每个通道有6种工作方式,可以由程序设定和改变;
5.所有的输入、输出电平都与TTL兼容。
二、8253内部结构
8253的内部结构如图8-1所示,它主要包括以下几个主要部分:
图8-18253的内部结构
1.数据总线缓冲器
实现8253与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息,包括某时刻的实时计数值。
2.读/写控制逻辑
控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。
3.控制字寄存器
在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。
4.计数通道0#、1#、2#:
这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。
三、8253的外部引脚
8253芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图8-2所示。8253芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:
1.D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。2.RD:来自于CPU的读控制信号输入引脚,低电平有效。
3.WR:来自于CPU的写控制信号输入引脚,低电平有效。
4.CS:芯片选择信号输入引脚,低电平有效。
图8-28253的引脚
5.A 1、A 0:地址信号输入引脚,用以选择8253芯片的通道及控制字寄存器。0A 、1A 的状态与8253端口地址的对应关系如下表所示。A 1
A 00
00#通道0
11#通道1
02#通道11控制端口
6.V CC 及GND :+5V 电源及接地引脚
7.CLK i :i=0,1,2,第i 个通道的计数脉冲输入引脚,8253规定,加在CLK 引脚的输入时钟信号的频率不得高于2.6MHZ ,即时钟周期不能小于380ns 。
8.GATE i :i=0,1,2,第i 个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。
9.OUT i :i=0,1,2,第i 个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU 发出的中断请求信号。四、8253的控制字
8253有一个8位的控制字寄存器,其格式如下:
图8-38253的控制字
其中:
D0:数制选择控制。为1时,表明采用BCD码进行定时/计数;否则,采用二进制进行定时/计数。
D3~D1:工作方式选择控制。000,0;001,1;X10,2;X11,3;100,4;101,5;
D5、D4:读写格式。00,计数锁存命令;01,读/写高8位命令;10,读/写低8位命令;11,先读/写低8位,再读写高8位命令。
D7、D6:通道选择控制。000通道;01,1通道;10,2通道;11,非法
1.8253的初始化编程
要使用8253,必须首先进行初始化编程,初始化编程包括设置通道控制字和送通道计数初值两个方面,控制字写入8253的控制字寄存器,而初始值则写入相应通道的计数寄存器中。
初始化编程包括如下步骤:
(1)写入通道控制字,规定通道的工作方式
(2)写入计数值,若规定只写低8位,则高8位自动置0,若规定只写高8位,
则低8位自动置0。若为16位计数值则分两次写入,先写低8位,后写高8位。D0:用于确定计数数制,0,二进制;1,BCD码
【例1】设8253的端口地址为:04H~0AH,要使计数器1工作在方式0,仅用8位二进
制计数,计数值为128,进行初始化编程。
控制字为:01010000B=50H
初始化程序:
MOV AL,50H
OUT0AH,AL
MOV AL,80H
OUT06H,AL
【例2】设8253的端口地址为:F8H~FEH,若用通道0工作在方式1,按二——十进制
计数,计数值为5080H,进行初始化编程。
控制字为:00110011B=33H
初始化程序:
MOV AL,33H
OUT0FEH,AL
MOV AL,80H
OUT0F8H,AL
MOV AL,50H
OUT0F8H,AL
【例3】设8253的端口地址为:04H~0AH,若用通道2工作在方式2,按二进制计数,
计数值为02F0H,进行初始化编程。
控制字为:10110100B=0B4H
初始化程序:
MOV AL,0B4H
OUT0AH,AL
MOV AL,0F0H
OUT08H,AL
MOV AL,02H