单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2006年11月,可编程定时/计数器8253,*,可编程定时/计数器8253,苗付友,2006年11月,1,可编程定时/计数器8253,可编程定时/计数器8253苗付友2006年11月1可编程定时,8253作用,定时,软件定时:让机器执行一段程序,安排循环来实现定时,容易实现,定时时间调整方便,定时精确,占用了CPU资源,降低了CPU的利用率。,硬件定时:可编程定时/计数硬件芯片,定时值、定时范围可以很容易的由软件改变,具有使用灵活、功能较强等特点。,外部事件计数,外部事件计数就是对外部脉冲信号计数。产生脉冲信号的外部原因就是外部事件。,如高速公路入口处一个专用计算机检测系统,它可以自动对进入高速公路的车辆进行计数,2006年11月,2,可编程定时/计数器8253,8253作用定时2006年11月2可编程定时/计数器8253,8253的内部结构,8253内部有3个独立的16位定时计数器通道。,计数器可按照二进制或十进制计数,计数和定时范围可在165535之间改变,,每个通道有6种工作方式,计数频率可高达2MHz以上。,3个计数通道,通道控制寄存器,数据总线缓冲器,读写控制电路,2006年11月,3,可编程定时/计数器8253,8253的内部结构 8253内部有3个独立的16位定时,计数通道,通道0、通道1和通道2,CLK:计数器的脉冲输入端,GATE:计数器的门控信号,OUT:计数器的输出信号,一般与计数溢出有关。,工作原理:,8253计数器工作在减1状态,每输入一个计数脉冲,计数器值减1,当计数器,计数到零时,OUT信,号有效,通知外设计,数器产生溢出,2006年11月,4,可编程定时/计数器8253,计数通道通道0、通道1和通道2 2006年11月4可编程定时,通道的使用,计数器:将要计数的次数预置到该通道计数器中,定时器:从CLK输入一固定频率的时钟脉冲,再根据要求定时的时间计算出定时所需的计数值或称时间常数,并预置到计数器中,计数值定时时间/时钟脉冲周期,2006年11月,5,可编程定时/计数器8253,通道的使用2006年11月5可编程定时/计数器8253,通道控制寄存器,一个通道控制寄存器,CPU通过对控制寄存器的读写,可以分别对三个计数通道的工作方式进行设置,只能写不能读,2006年11月,6,可编程定时/计数器8253,通道控制寄存器 一个通道控制寄存器2006年11月6可编程定,数据总线缓冲器,双向三态的8位数据缓冲器,实现8253和CPU之间的数据接口,读写控制电路,片选信号 CS,A1A0的组合:选择三个通道、一个控制寄存器,共4个端口,读信号 和写信号 由CPU提供,低电平有效。,2006年11月,7,可编程定时/计数器8253,数据总线缓冲器双向三态的8位数据缓冲器,实现8253和CPU,8253的管脚分配,通道管脚,CLKn:通道n的脉冲输入管脚外部事件,或定时脉冲由这三个管脚输入;,OUTn:通道n的输出管脚,当计数值减 到0,在OUT管脚上输出,输出波形取决于,8253通道的工作方式;,GATEn:门控信号输入管脚,8253的管脚包括数据线D,7,D,0,,读写控制线,以及和CPU地址线相连接的片选信号,2006年11月,8,可编程定时/计数器8253,8253的管脚分配 通道管脚 8253的管脚包括数据线D7,8253的编程,控制字,分为4部分,通道选择、计数器读/写方式、工作方式和计数码的选择,。,计数器选择(SC1、SC0),计数器读/写方式(RLl、RL0),2006年11月,9,可编程定时/计数器8253,8253的编程控制字 计数器选择(SC1、SC0)计数器读,计数器的锁存操作,8253一旦初始化后,就不需要CPU参与而自动计数。为了读出计数值时不干扰实际计数过程,同时读出的值又是稳定的,就要求对通道计数器中的计数值进行锁存。,硬件锁存暂停计数 GATE,暂停计数,软件控制命令锁存,每一个通道都有一个输出锁存器(16位),平时它的值随通道计数器的值变化,当向通道写入锁存的控制命令时,它把计数器的现行值锁存而计数器的计数过程照样进行。这样,CPU读取的是锁存器中的值。当重新写入一个命令字或CPU读取计数值后,计数通道会自动解除锁存状态。,锁存控制字:,00,00,XXXXB,先读取低8位,后读取高8位,(不锁存):10,00H,0F,00H,2006年11月,10,可编程定时/计数器8253,计数器的锁存操作 先读取低8位,后读取高8位(不锁存),工作方式选择(M2、M1、M0),BCD计数制:写入初值范围为0000到9999,而0000是最大值,代表10000,二进制计数制:写入初值范围为0000到FFFFH,其中0000为最大值,代表65536。,控制字的D5D4为00,表示的是锁存命令。这时控制字中的低4位无效,2006年11月,11,可编程定时/计数器8253,工作方式选择(M2、M1、M0)BCD计数制:写,8253的工作方式,方式0计数结束中断方式,方式1可编程序的单独负脉冲,方式2速率发生器,方式3方波发生器,方式4软件触发方式,方式5硬件触发方式,2006年11月,12,可编程定时/计数器8253,8253的工作方式 方式0计数结束中断方式 2006年1,方式0计数结束中断方式,方式0的作用,用户可以在设定时间上产生中断信号,工作方式0特点:,门控信号GATE必须为1,计数器才能计数;,计数时通道输出端OUT一直为0;,通道计数器计数到0后,OUT由0到1,同时计数器停止工作。,OUT输出的从低到高的正跳变或高电平可作为中断请求信号INTR,向CPU发出中断请求。,在计数过程中,GATE信号为低电平时,停止计数,一旦GATE变高,则继续计数,2006年11月,13,可编程定时/计数器8253,方式0计数结束中断方式方式0的作用2006年11月13可,INT,8086,MOV AL,10011010B;置8255A方式控制字,OUT 8255控制口,AL,MOV AL,00H;8255A置位/复位控制字,使PC00,OUT 8255控制口,AL,MOV AL,00110000B ;置8253通道0方式控制字30H,OUT 8253控制口,AL,MOV AL,40H;置8253通道0时间常数,OUT 通道0端口,AL ;,第一次写初始计数值的,低8位,,,MOV AL,38H ;,第二次写,高8位,。3840H=14400秒=4小时,OUT 通道0端口,AL,中断程序中有关程序段如下:,MOV AL,00000001B;8255置位/复位控制字,使PC01,OUT 8255控制口,AL,家庭厨房系统,2006年11月,14,可编程定时/计数器8253,INT8086家庭厨房系统2006年11月14可编程定时,方式1可编程序的单独负脉冲,单稳电路,在输入的激励下产生固定宽度脉冲的电路,当输入端输入一个不低于规定的最小宽度的脉冲后,单稳电路就输出一个用户事先设定宽度的脉冲。,8253的方式1就是一个可编程单稳电路,方式1工作过程,门控信号GATE是触发信号,,上升沿有效,。即开始计数是由GATE的上升沿触发的;,触发后,通道计数器开始计数,输出端OUT由高变低;,计数器计数到0,OUT再由低变高。,PWNT,clk,PW:输出的负脉冲宽度;N:初始计数值,T,clk,:CLK端的脉冲周期,2006年11月,15,可编程定时/计数器8253,方式1可编程序的单独负脉冲单稳电路2006年11月15可,车辆统计,不同车辆间隔T3不能太小;(PW),同一车辆的不同车厢间距离不能太大;(PW)2006年11月,方式2速率发生器,方式2是一个可编程的分频电路,它把输入信号CLK分频后以脉冲的形式由OUT输出,而分频系数就是用户事先对通道计数器写入的初始计数值,工作方式,(OUT初始为高电平),GATE门为1,计数器才能工作,对CLK,端上的脉冲进行计数;,当计数器“减”计数到1时,输出端由,高变低,再经过一个CLK周期,即计,数器计数到0时,输出端OUT又跳变,为高。所以方式2输出周期性负脉冲信,号,其宽度固定为一个CLK周期;,当计数器的值减为0时,自动重新装入,计数初值,实现循环计数,方式2计数初值重载,2006年11月,17,可编程定时/计数器8253,方式2速率发生器方式2是一个可编程的分频电路,它把输入信,在计数过程中,如果GATE信号为低电平,则停止计数,待GATE信号变为高电平后,从初始值开始重新计数。,方式2定时波形图,2006年11月,18,可编程定时/计数器8253,在计数过程中,如果GATE信号为低电平,则停止计数,待GAT,方式3方波发生器,工作方式:,当控制字写入控制寄存器后,输出端OUT变高。,当计数初值写入通道,且GATE为高电平时计数器开始计数,OUT保持高电平。,若计数初值n为偶数,则当计数值减到n2时,输出端OUT变为低电平。然后此 低电平一直保持到计数值减为0,OUT再次变为高电平。,当计数值减到0时计数器重新装入计数值,实现循环计数。,当计数值N为偶数时,输出端OUT输出重复周期为NCLK,占空比为1:1的方波。,当计数初值N为奇数,输出重复周期为NCLK,但占空比为(N+1)/2(N-1)/2,因而输出是近似方波。,2006年11月,19,可编程定时/计数器8253,方式3方波发生器工作方式:2006年11月19可编程定时,若在计数期间写入一个新的计数值,并不立即影响现行计数过程,等到计数值减到0后,重新装入新的计数值,开始以新的速率输出方波。,图7.35 方式3定时波形图,2006年11月,20,可编程定时/计数器8253,若在计数期间写入一个新的计数值,并不立即影响现行计数过程,等,8253的通道0,实时中断。,用于产生固定频率的时钟节拍,故设定工作在方式3,初值为0,所以从OUT0管脚的输出方波频率为1.19MHz/2,16,=18.2Hz,通道0的控制字为36H;,8253的通道l,动态RAM刷新。,用于固定频率的刷新信号,故设定工作在方式2,计数值为12H18,速率输出频率为1.19M/1866.1kHz,即定时时间为15.13s,通道1的控制字为54H;,8253的通道2,用于产生频率信号。,故取工作在方式3,计数值为6A4H1190,方波输出频率为1.19MHz/11901kHz。此信号频率决定扬声器的音调,通道2的控制字为0B6H,。,PC/XT机中8253电路连接图,2006年11月,21,可编程定时/计数器8253,8253的通道0,实时中断。用于产生固定频率的时钟节拍,,方式4软件触发方式,软件触发方式:CPU通过指令触发一个选通信号给外部设备,选通信号在触发后设定时间点上发出。,选通信号作用:,锁存器STB,打印机STB,CPU通过触发8253的某个通道,定时启动一个事件或工作过程,或CPU启动某个事件的命令延迟了设定时间后才执行。,方式4中,当写入控制字后,输出端OUT变为高电平。当计数初值写入通道后,CPU就完成了对通道的触发。当计数器计数到0时,通道的OUT端就输出负脉冲。,2006年11月,22,可编程定时/计数器8253,方式4软件触发方式 软件触发方式:CPU通过指令触发一个,方式4工作过程,门控信号GATE为高电平,计数器开始减1计数,OUT维持高电平;,当计数器减到0,输出端OUT变低,再经过一个CLK输入时钟周期,OUT输出又变高。,所以输出端OUT在计数器溢出时产生一个宽度为1个CLK周期的负脉冲。而这个负脉冲就可以做为外设的选通信号。,若在计数过程中,GATE信号变低,则停止计数;到GATE信号变高,重新开始从初值减1计数。,2006年11月,23,可编程定时/计数器8253,方式4工作过程 若在计数过程中,GATE信号变低,则停止计数,方式4下的家庭厨房系统,早晨启动你的计算机,在8点钟执行对82