微机系统与接口教学资料第9章可编程记数定时器接口.ppt
1,第八章 可编程定时/计数器,陆尧胜 杨仁桓 主讲暨南大学信息科学技术学院电子工程系,微机系统与接口,2,可编程定时计数器接口芯片8253,功能:定时和脉冲信号的处理与接口是完全有别于并行信号的,其特点是信号形式简单但需要连续检测,下面介绍的INTEL8253可编程定时计数器就是可以实现所要求这方面功能。8253内部有3个独立的16位定时计数器通道。计数器可按照二进制或十进制计数,计数和定时范围可在165535之间改变,每个通道有6种工作方式,计数频率可高达2MHz以上。,3,8253的管脚分配,通道管脚,数据线,通道选择,控制线,4,8253的编程:,8253只有一个控制字,8253的一个方式控制字只决定一个计数通道的工作模式。8253的控制字格式如图所示。共分为4部分,通道选择、计数器读/写方式、工作方式和计数码的选择。,5,D7、D6:选择计数器,11为非法;D5、D4:控制计数器读/写的字节及读写高低字节的顺序;00-锁存命令;01-只读/写一个低字节;10-只读/写一个高字节;读/写2个字节,先低后高;D3、D2、D1:选择计数器的工作方式,自方式0至方式5;D0:计数器码制,0-二进制,1-二十进制。,6,编程结构程序员的观点,计数器(3个)包括控制寄存器 存放控制命令字(只写)占用4个地址 3个计数器,1个控制寄存器,16位初值寄存器16位计数寄存器,(减法计数器),7,定时/计数的工作过程,1.设置8253的工作方式 2.设置计数初值到初值寄存器 3.第一个CLK信号使初值寄存器的内容置入 计数寄存器 4.以后每来一个CLK信号,计数寄存器减1 5.减到0时,OUT端输出一特殊波形的信号注:以上计数过程中还受到GATE信号的控制,8,计数启动方式,软件启动过程硬件启动过程,GATE端保持为高电平写入计数初值后的第2个 CLK脉冲的下降沿开始计数,GATE端有一个上升沿对应CLK脉冲的下降沿开始计数,程序指令启动软件启动外部电路信号启动硬件启动,9,五、工作方式,方式0计数结束中断方式1可重复触发的单稳态触发器方式2频率发生器方式3方波发生器方式4软件触发选通方式5硬件触发选通,10,工作方式,方式0,软件启动,不自动重复计数。装入初值后OUT端变低电平,计数结束OUT输出高电平。,(计数结束中断),11,1、方式0计数结束中断方式 工作方式0有如下特点:a、门控信号GATE必须为1,计数器才能计数;b、计数时通道输出端OUT一直为0;c、通道计数器计数到0后,OUT由0到1,同时计数器停止工作。,12,方式1,硬件启动(GATE上升沿触发),不自动重复计数。装入初值后OUT端变高电平,计数开始OUT端变为低电平,计数结束后又变高。,(单稳态触发器),方式1,13,2、方式1可编程序的单个负脉冲(单稳)方式1工作过程如下:a、门控信号GATE是触发信号,上升沿有效。即开始计数是由GATE的上升沿触发的;b、触发后,通道计数器开始计数,输出端OUT由高变低;c、计数器计数到0,OUT再由低变高。,方式1,14,方式2,软、硬件启动,自动重复计数。装入初值后OUT端变高电平,计数到最后一个CLK时OUT输出负脉冲,并连续重复此过程。GATE=1允许计数;=0后停止计数。恢复=1后,按原定的计数值重新开始计数。,(频率发生器),方式2-频率发生器,15,3、方式2频率发生器(自动装入时间常数的N分频器)方式2的特点如下:a、GATE门为1,计数器才能工作,对CLK端上的脉冲进行计数;b、当计数器“减”计数到1时,OUT由高变低,再经过一个CLK周期,即计数器计数到0时,输出端OUT又跳变为高。方式2输出周期性负脉冲信号,其宽度固定为一个CLK周期;c、当计数器的值减为0时,自动重新装入计数初值,实现循环计数。,16,17,工作方式3,方式3,软、硬件启动,自动重复计数。装入初值后OUT端变高电平,然后OUT连续输出对称方波:,(方波发生器),前 N/2或(N+1)/2 个CLK,OUT为高,后N/2或(N-1)/2 个CLK,OUT为低。,18,4、方式3方波发生器 方式2虽然可以作分频电路,但其输出是窄脉冲,如果是方波,就只有选方式3,19,方式4,方式4,软件启动,不自动重复计数。装入初值后输出端变高电平,计数结束输出一个CLK宽度的负脉冲,(软件触发选通),20,5、方式4软件触发方式方式4在工作过程中有以下特点:a、门控信号GATE为高电平,计数器开始减1计数,OUT维持高电平;b、当计数器减到0,输出端OUT变低,再经过一个CLK输入时钟周期,OUT输出又变高。,方式4,21,方式4软件触发方式,22,方式5,方式5,硬件启动,不自动重复计数。OUT端波形与方式4相同,(硬件触发选通),23,6、方式5硬件触发方式 这种工作方式同方式4很相似,当控制字写入控制寄存器后,输出端OUT变高。同方式4不同的一点是当计数值写入通道计数器后,通道并未被触发,也就是计数器并不立即开始计数。只有当GATE信号的上升沿触发通道后,通道计数器才开始计数。,24,方式5硬件触发方式,25,各种工作方式特点,方式0(计数结束中断)计数过程中,GATE端应保持高电平。每写入一次初值计数一个周期,然后停止计数。OUT端输出是一个约(N+1)TCLK宽度的负脉冲。计数过程中可随时修改初值重新开始计数。方式1(单稳态触发器)门控信号GATE端的跳变触发计数,可重复触发。若下一次GATE上升沿提前到达,则OUT端负脉冲拉宽为两次计数过程之和。计数过程中写入新初值不影响本次计数。,26,各种工作方式特点,方式2(频率发生器)GATE为计数的控制信号:GATE变低计数停止,再变高时的下一个CLK下降沿,从初值开始重新计数。每个计数周期结束时(减到1时),OUT端输出一个TCLK宽度的负脉冲。计数过程自动重复进行。计数过程中修改初值不影响本轮计数过程。方式3(方波发生器)OUT输出方波,前半周期为高,后半周期为低。计数过程中修改初值不影响本半轮计数过程。其余的与方式2 类似。,27,各种工作方式特点,方式4(软件触发选通)计数过程中,GATE端应保持高电平。每写入一次初值,计数一个周期,然后停止计数。每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。计数过程中修改初值不影响本轮计数过程。方式5(硬件触发选通)写入初值时,GATE端应保持低电平。GATE每出现一次正脉冲,计数一个周期,然后停止计数。每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。计数过程中修改初值不影响本轮计数过程。,28,8253的工作方式小结,8253的六种工作方式可归为两类,一个是充当频率发生器,另一类主要是作计数器来使用。下面我们就从这个角度来讨论总结OUT和GATE门的作用。,29,与频率发生器有关的工作方式8253有两种方式与频率发生器有关,即方式2和发生3,对OUT端,方式2提供给用户的是负脉冲,方式3提供给用户的是方波。在这个两种方式下,GATE信号要始终保持为高。,30,与计数器有关的工作方式 有方式0、1和方式4、5。启动方式有两种:一种是CPU把时间常数写入相应通道后,计数器就开始工作,可称之为软件启动方式。在这种启动方式下,GATE要始终保持为高电平,所以方式0和方式4可以称为软件启动方式。另一种是硬件启动计数器,即CPU把时间常数写入计数器后,即使GATE为高电平,计数器并不工作。只有GATE发生跳变,其上升沿启动计数器工作,所以方式1和方式5就可以称为硬件启动方式。计数器溢出时,OUT有两种输出形式,要么是电平,要么是负脉冲。前者有方式0方式1,后者有方式4和方式5。,31,8253应用举例,例1:现有一个高精密晶体振荡电路,输出信号是脉冲波,频率为1MHz。要求利用8253做一个秒信号发生器,其输出接一发光二极管,以0.5秒点亮,0.5秒熄灭的方式闪烁指示。设8253的通道地址为80H86H(偶地址),32,解:1、时间常数计算 这个例子要求用8253作一个分频电路,而且其输出应该是方波,否则发光二极管不可能等间隔闪烁指示。频率为1MHz信号的周期为1微妙,而1Hz信号的周期为1秒,所以分频系数N可按下式进行计算:,33,由于8253一个通道最大的计数值是65536,所以对于N1000000这样的大数,一个通道是不可能完成上述分频要求的。由于 即取两个计数器,采用级联方式。2、电路,34,3、工作方式选择 由于通道1要输出方波信号推动发光二极管,所以通道1应选工作方式3。对于通道0,只要能起分频作用就行,对输出波形不做要求,所以方式2和方式3都可以选用。这样对于通道0,我们取工作方式2,BCD计数;对于通道1,我们取工作方式3,二进制计数(当然也可选BCD计数),35,4、程序mov al,00110101b;通道0控制字out 86h,almov al,00;通道0初始计数值out 80h,almov al,10hout 80h,almov al,01110110b;通道1控制字out 86h,al mov al,0e0h;通道1初始计数值,03E8H=1000BCDout 82h,almov al,03hout 82h,al,36,例2:计件系统。计件系统的功能就是记录脉冲的个数。一个脉冲代表一个事件,比如交通道路检测系统中通过检测点的车辆,工业控制系统中流水线上已加工好的工件。要求在计件过程中,PC机可以显示当前计数器的内容,当完成10000个工件记录后,系统发出1KHz信号推动喇叭发音通知用户。,37,解:1、电路:需要两个通道,一个作为计数,选用通道0。另一个产生1KHz信号,选用通道1。工作原理如下,传感器电路把物理事件转换为脉冲信号输入到通道0计数,当记录10000个事件后,通道0计数器溢出,GATE端输出高电平,这时通道1开始工作,产生1KHz信号推动喇叭发音。,38,2、工作方式选择 对于通道1,由于要产生1KHz信号,故选用工作方 式3。对于通道0,要求初始计数值写入计数通道后,计数器就可以工作,则通道0的启动方式应是软件启动。另外由于要求计数溢出后产生一个信号来启动一个事件,即喇叭发音,故可选的工作方式为方式0和方式4,对于图所示方案,通道1的GATE信号由通道0的OUT信号产生,这个OUT信号应该是电平型的,所以通道0应选用方式0。,39,3、时间常数 N010004、程序,