预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共60页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章可编程定时器/计数器8253/8254及其应用1.定时与计数 在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工作状态,或者对外部过程进行计数。 定时或计数的工作实质均体现为对脉冲信号的个数的测量。 定时:如果计数的对象是标准的时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时。 计数:如果计数的对象是与外部输入的脉冲信号(周期可以不相等),则此时即为计数。2.定时的实现方法 (1)软件法 利用一段延时子程序来实现定时操作。 特点:无需硬件支持,控制比较方便,但在定时期间,CPU不能从事其它工作,降低了机器的利用率。 (2)硬件法 专门设计一套电路(比如555定时器)用以实现定时与计数,特点是需要花费一定硬设备,而且当电路制成之后,定时值及计数范围不能改变。(3)软、硬件结合法 即设计一种专门的具有可编程特性的芯片,来控制定时和计数的操作,定时或计数的过程不需要CPU的参与,而这些芯片具有中断控制能力,定时、计数结束时能产生中断请求信号,因而定时期间不影响CPU的正常工作。 7.18253的工作原理 7.1.1Intel8253的内部结构及引脚 Intel8253是8086/8088微机系统常用的可编程定时器/计数器芯片,其增强型芯片为Intel8254等。 Intel8253的一般性能概述: 1.每个8253芯片有3个独立的16位计数器通道。 2.每个计数器通道都可以按照二进制或十进制计数。 3.每个计数器的最大的输入频率为可以高达2MHz。 4.每个通道有6种工作方式,工作方式由程序设定。Intel8253的外部引脚(24DIP)1.D7~D0:8位,双向,三态数据线,用来与系统数据总线相连。 2.CS、WR、RD、A1、A0(内部4个端口),A1A0=00,选中通道0;A1A0=01,选中通道1;A1A0=10,选中通道2;A1A0=11,选中控制寄存器端口。 3.CLKi:i=0,1,2,第i个通道的计数脉冲输入引脚,每输入一个时钟脉冲,计数器数值减1。 4.GATEi:i=0,1,2,第i个通道的门控信号输入引脚,用于控制启/停计数器计数。 5.OUTi:i=0,1,2,第i个通道的定时/计数信号输出引脚,输出信号的波形由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。 6.VCC、GND。8253主要包括以下几个主要部分: 1.数据总线缓冲器 实现8253与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息。 2.读/写控制逻辑 控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。CS、A1、A0与CPU的连接决定8253芯片的端口地址。3.计数通道0#、1#、2#: 这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含: 一个8位控制字寄存器; 一个16位的计数初值寄存器,存放计数初始值; 一个16位的减法计数器(计数器执行部件,减法计数器); 一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存当前计数值,供CPU读取。 这些16位的计数器、锁存器均可被分为高8位、低8位两个部分,因此也可作为8位寄存器使用。4.控制字寄存器 在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。 8253的三个计数通道各有一个命令字寄存器,都使用同一个地址(A1A0=11),因此,使用命令字的最高两位SC1、SC0来确定到底是对哪个计数通道的设定。8253的控制字计数方式选择位BCD: 为1:BCD码计数,进行十进制减法计数。写入初值也用BCD码表示,其中0000H表示十进制数最大值10000。例如,进行BCD码计数时,写入初值1200H,相当于计数值为十进制的1200。 为0:二进制计数。写入初值为二进制数,进行二进制减法计数。0000H表示最大值10000H,相当于十进制的65536。例如,进行二进制计数时,写入初值1200H,相当于计数值为十进制的4608。8.1.28253的初始化编程和门控信号的功能 1.8253的初始化编程 要使用8253,必须首先进行初始化编程,初始化编程包括设置通道控制字和送通道计数初值两个步骤,控制字写入8253的控制字寄存器(A1A0=11),而初始值则写入相应通道的计数初值寄存器中(A1A0=00/01/10)。 初始化编程包括如下步骤: (1)写入通道控制字,规定某个通道的工作方式。 (2)给这个通道写入计数值,若规定只写低8位,则高8位自动置0,若规定只