Page1皖西学院机械与电子工程学院微机原理与接口技术第八章可编程计数器/定时器8253及其应用Page28253工作原理:结构、引脚、工作方式8253应用举例:定时功能、计数功能内容提要第八章可编程计数器/定时器8253及其应用Page3第八章可编程计数器/定时器8253及其应用概述在微型计算机系统中,常需要用到定时功能。例如,按一定的时间间隔对动态RAM进行刷新;扬声器的发声;在计算机实时控制和处理系统中,按一定的采样周期对处理对象进行采样,或定时检测某些参数,对外部事件进行计数,等等,都需要定时信号。实现定时功能主要有三种方法:软件定时不可编程的硬件定时可编程的硬件定时第八章可编程计数器/定时器8253及其应用——概述Page4①软件定时是最简单的定时方法,它不需要硬件支持,只要让机器循环执行某一条或一系列指令,这些指令本身并没有具体的执行目的,但由于执行每条指令都需要一定的时间,重复执行这些指令就会占用一段固定的时间。②利用这种方法定时,完全由软件编程来控制相改变定时时间,灵活方便,而且节省费用。③但CPU的利用率太低,在定时循环期间,CPU不能再去做任何其它有用的工作,而仅仅是在反复循环,等待预定的定时时间的到来,这在许多情况下是不允许的。比如,对动态存储器的定时刷新操作,只要处于开机状态,就需要一直不停地进行下去,显然不能采用软件定时。1.软件定时第八章可编程计数器/定时器8253及其应用——概述Page5555芯片是一种常用的不可编程器件,加上外接电阻和电容就能构成定时电路。这种定时电路结构简单,价格便宜,通过改变电阻或电容值,可以在一定的定时范围内改变定时时间。但这种电路在硬件已连接好的情况下,定时时间和范围就不能由程序来控制和改变,而且定时精度也不高。2.不可编程的硬件定时3.可编程的硬件定时①可编程定时器/计数器电路利用硬件电路和中断方法控制定时,定时时间和范围完全由软件来确定和改变,并由微处理器的时钟信号提供时间基准,这种时钟信号由晶体振荡器产生,故计时精确稳定。第八章可编程计数器/定时器8253及其应用——概述Page6②用可编程定时器/计数器电路进行定时时,先要根据预定的定时时间,用指令对计数器/定时器芯片设定计数初值,然后启动芯片进行工作。③计数器一旦开始工作后,CPU就可以去做别的工作,等计数器计到预定的时间,便自动形成一个输出信号,该信号可用来向CPU提出中断请求,通知CPU定时时间已到,使CPU作相应的处理。或者直接利用输出信号去启动设备工作。④这种方法不但显著提高了CPU的利用率,而且定时时间由软件设置,使用起来十分灵活方便,加上定时时间又很精确,所以获得了广泛的应用。⑤系统也可以利用计数器/定时器芯片对外部事件进行计数。第八章可编程计数器/定时器8253及其应用——概述Page7Intel8253就是一种能完成上述功能的计数器/定时器芯片,被称为可编程间隔定时器(ProgrammableIntervalTimer,PIT)。4.可编程计数器/定时器8253①8253内部具有3个独立的16位计数器通道,通过对它进行编程,每个计数器通道均可按6种不同的方式工作,并且都可以按2进制或10进制格式进行计数,最高计数频率能达到2MHz。②8253还可用作可编程方波频率产生器、分频器、程控单脉冲发生器等。第八章可编程计数器/定时器8253及其应用——概述Page85.可编程计数器/定时器8254InteI8254是8253的增强型产品,它与8253的引脚兼容,功能几乎完全相同,不同之处在于:①8253的最大输入时钟频率为2MHz,而8254的最大输入时钟频率可高达5MHz,8254-2则为l0MHz。②8254有读回(read-back)功能,可以同时锁存1~3个计数器的计数值及状态值,供CPU读取,而8253每次只能锁存和读取一个通道的计数器,且不能读取状态值。第八章可编程计数器/定时器8253及其应用——概述Page9§8-18253的工作原理一、8253的内部结构和引脚信号图8-18253的内部结构§8-18253的工作原理——8253的内部结构和引脚信号图8-2Page101.数据总线缓冲器数据总线缓冲器是8253与系统数据总线相连接时用的接口电路,由8位双向三态缓冲器构成,CPU用输入/输出指令对8253进行读/写操作的信息,都经8位数据总线D7~D0传送,这些信息包括:⑴CPU在对8253进行初始化编程时,向它写入的控制字。⑵CPU向某一计数器写入的计数初值。⑶从计数器读出的计数值。§8-18253的工作原理——8253的内部结构和引脚信号Page112.读/写控制逻辑接收系统控制总线送来的输入信号,经组合后形成控制信号,对各部分操作进行控制。可接收的信号有:⑴CS片选信号,低电平有效,由地址总线经I/O端口译码电路产生。只有当CS为低电平时,CPU才能对8253进行连写操作。⑵RD读信号,低电平有效。当RD为低电平时,表示CPU正在读取所选定的计数器通道中的内容。⑶WR写信号,低电平有效。当WR为低电平时,表示CPU正在将计数初值写入所选中的计数通道中或者将控制字写入控制字寄存器中。⑷A1A0端口选择信号。在8353内部有3个计数器通道(0~2)和一个控制字寄存器端口。当A1A0=00时,选中通道0;A1A0=01时,选中通道1;A1A0=10时,选中通道2;A1A0=11时,选中控制字寄存器端口。§8-18253的工作原理——8253的内部结构和引脚信号Page12注意:如果8253与8位数据总线的微机相连,只要将A1A0分别与地址总线的最低两位A1A0相连即可。如果系统采用的是8086CPU,则数据总线为16位。CPU在传送数据时,总是将低8位数据送往偶地址端口,将高8位数据送到奇地址端口。反之,偶地址端口的数据总是通过低8位数据总线送到CPU,奇地址端口的数据总是通过高8位数据总线送到CPU。当仅具有8位数据总线的存储器或I/O接口芯片与8086的16位数据总线相连时,既可以连到高8位数据总线,也可以接在低8位数据总线上。在实际设计系统时,为了方便起见,常将这些芯片的数据线D7~D0接到系统数据总线的低8位,这样,CPU就要求芯片内部的各个端口都使用偶地址(地址总线的A0=0)。应改用地址总线中的A2A1实现端口选择,即将A2连到8253的A1引脚,而将A1与8253的A0引脚相连。§8-18253的工作原理——8253的内部结构和引脚信号Page13CSRDWRA1A0功能01000写入计数器001001写入计数器101010写入计数器201011写入控制字寄存器00100读计数器000101读计数器100110读计数器200111无操作1××××禁止使用011××无操作8253输入信号组合的功能表§8-18253的工作原理——8253的内部结构和引脚信号Page143.计数器0~2包含3个完全相同的计数器/定时器通道,对3个通道的操作完全独立。每个通道都包含:一个8位的控制字寄存器:只写寄存器。对8253进行编程时,CPU用输出指令向它写入控制字,以选定计数器通道,规定各通道的工作方式,读写格式和数制。一个16位的计数初值寄存器:存放由CPU送来的计数初值。一个计数器执行部件(实际的计数器):执行部件实际是一个16位的减法计数器,它的起始值就是初值寄存器的值,该值可由程序设置。输出锁存器:用来锁存计数器执行部件的值,CPU可对它执行读操作,以了解某个时刻计数器的瞬时值。①构成:注意:计数初值寄存器、计数器执行部件和输出锁存器都是16位寄存器,它们均可被分成高8位和低8位两个部分。因此也可作为8位寄存器来使用。§8-18253的工作原理——8253的内部结构和引脚信号Page15每个通道工作时,都是对输入到CLK引脚上的脉冲按2进制或10进制(BCD码)格式进行计数,计数采用倒计数法,先对计数器预置一个初值,再把初值装入实际的计数器。然后,开始递减计数。即每输入一个时钟脉冲,计数器的值减1,当计数器的值减为0时,便从OUT引脚输出一个信号。输出信号的波形主要由工作方式决定,同时还受到从外部加到GATE引脚上的门控信号控制,它决定是否允许计数。当用8253作外部事件计数器时,在CLK脚上所加的计数脉冲是由外部事件产生的,这些脉冲的间隔可以是不相等的。如果要用它作定时器,则CLK引脚上应输入精确的时钟脉冲。这时,8253所能实现的定时时间,决定于计数脉冲的频率和计数器的初值,即定时时间=时钟脉冲周期tc×预置的计数初值n②工作原理§8-18253的工作原理——8253的内部结构和引脚信号Page168253的3个计数器都各有3个引脚,它们是:CLK0~CLK2:计数器0~2的输入时钟脉冲从这里输入。频率不能大于2MHz。OUT0~OUT2:计数器0~2的输出端。GATE0~GATE2:计数器0~2的门控脉冲输入端。③引脚§8-18253的工作原理——8253的内部结构和引脚信号Page174.控制字寄存器BCDM2M1M0RL1RL0SC1SC0D7D6D5D4D3D2D1D01BCD码计数0二进制计数000方式0001方式1X10方式2X11方式3100方式4101方式500计数器锁存,供CPU读01只读/写计数器低字节10只读/写计数器高字节11先读/写计数器低字节,后读/写高字节00选择通道001选择通道110选择通道211无效图8-38253控制字格式§8-18253的工作原理——8253的内部结构和引脚信号Page18二、初始化编程步骤和门控信号的功能1.8253的初始化编程步骤刚接通电源时,8253处于未定义状态,在使用之前,必须用程序把它们初始化为所需的特定模式,这个过程称为初始化编程。初始化编程按下列步骤进行:(共2步)⑴写入控制字用输出指令向控制字寄存器写入一个控制字,以选定计数器通道,规定该计数器的工作方式和计数格式。写入控制字还起到复位作用,使输出端OUT变为规定的初始状态,并使计数器清0。§8-18253的工作原理——初始化编程步骤和门控信号的功能Page19⑵写入计数初值用输出指令向选中的计数器端口地址中写入一个计数初值,初值可以是8位数据,也可以是16位数据。若是8位数,只要用一条输出指令就可完成初值的设置。如果是16位数,则必须用两条输出指令来完成,且先送低8位数据,后送高8位数据。注意,计数初值为0时,也要分成两次写入,因为在二进制计数时,它表示65536,BCD计数时,它表示10000。说明:由于3个计数器分别具有独立的编程地址,而控制字寄存器本身的内容又确定了所控制的寄存器的序号,因此对3个计数器通道的编程没有先后顺序的规定,可任意选择某一个计数器通道进行初始化编理,只要符合先写入控制字,后写入计数初值的规定即可。§8-18253的工作原理——初始化编程步骤和门控信号的功能Page20例如,某微机系统的8253的3个计数器的端口地址分别为3F0H、3F2H和3F4H,控制字寄存器的端口地址为3F6H,要求8253的通道0工作于方式3,计数初值n=1234H,则初始化程序为:MOVAL,00110111B;控制字:选择通道0,先读/写低字节,;后高字节,方式3,BCD计数MOVDX,3F6H;指向控制口OUTDX,AL;送控制字MOVAL,34H;计数值低字节MOVDX,3F0H;指向计数器0端口OUTDX,AL;先写入低字节MOVAL,12H;计数值高字节OUTDX,AL;后写入高字节注意:初值写入后,经过一个时钟脉冲的上升沿和下降沿,才能将初值装入实际计数器,再在GATE的控制下,对CLK引脚输入的脉冲递减计数。§8-18253的工作原理——初始化编程步骤和门控信号的功能Page212.门控信号控制功能工作方式GATE为低电平或下降沿GATE为上升沿GATE为高电平方式0禁止计数——允许计数方式1——从初值开始计数,下一个时钟后输出变为低电平——方式2禁止计数,使输出变高从初值开始计数允