您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第7章 可编程定时器计数器
第7章可编程定时器/计数器82537.1可编程定时器/计数器的典型结构和基本工作原理7.2可编程定时计数器8253-57.1可编程定时器/计数器的典型结构和基本工作原理GATE是控制输入端它有多种控制作用:1)允许/禁止计数2)启动/停止计数等。控制寄存器是用来控制计数器/定时器的工作方式,就是控制CLK脉冲和CATE门控信号适当配合来产生OUT端的输出信号的形状。计数器/定时器归纳为以下几种工作方式:(1)门脉冲控制时钟输入。此时,当门脉冲GATE到来时,时钟CLK有效,进行计数操作;当门脉冲结束时,时钟无效,计数停止。(2)用门脉冲重新启动计数器。(3)用门脉冲停止计数器工作。(4)单次计数。此时仅要求GATE为高电平即可。(5)循环计数。此时,每当计数执行单元为零时,输出端OUT输出一个信号,同时又自动重新装入计数初值寄存器内容到计数执行单元,重复原来的计数过程,从而在OUT端上可输出周期性的脉冲信号。8253-5的结构和功能(1)有3个独立的16位计数器。(2)每个计数器都可以按照二进制或BCD码进行计数。(3)每个计数器的计数速率可高达2MHz(8254-2计数频率可达到10MHz)。(4)每个计数器有6种工作方式,可由程序设置和改变。(5)所有的输入输出引脚电平都与TTL电平兼容。25610000H8位计数器二进制BCD码最大计数次数:最大计数初值:65536100000000H16位计数器二进制BCD码7.2可编程定时器/计数器8253-58253的结构和引脚三个计数器中每一个都有三条信号线计数输入CLK——用于输入定时基准脉冲或计数脉冲;输出信号OUT——以相应的电平指示计数的完成,或输出脉冲波形;·选通输入(门控输入)GATE——用于启动或禁止计数器的操作,以使计数器和计测对象同步。每个计数器中有三个寄存器①控制寄存器——初始化时,将控制字寄存器中的内容写入该寄存器;②计数初值寄存器——初始化时写入该计数器的初始值;③减法计数寄存器——计数初值由计数初值寄存器送人减法计数寄存器,当计数输入端输入一个计数脉冲时,减法计数寄存器内容减1,当减到零时,输出端输出相应信号表示计数结束。8253的控制字在8253的初始化编程中,由CPU向8253的控制字寄存器写入一个控制字,它规定了8253的工作方式。D7D6D5D4D3D2D1D00=二进制1=二—十进制工作方式选择000=方式0001=方式1010=方式2011=方式3100=方式4101=方式5通道控制字寻址00=通道0控制寄存器01=通道1控制寄存器10=通道2控制寄存器11=不用读写操作00=锁定当前计数值01=读/写计数器低8位10=读写计数器高8位11=先读/写计数器低8位再读/写计数器高8位表8253-5端口功能选择表CSA1A0RDWR功能00001读通道000101读通道101001读通道200010写通道000110写通道101010写通道201110写控制字1)根据功能要求,写出信号的组合例:写通道1CSA1A0RDWR001102)根据信号的组合,说明芯片的操作例:CSA1A0RDWR01110写控制字选通信号GATE的功能低电平或进入低电平上升边沿高电平方式0禁止计数------允许计数方式1------1.初始化和计数2.下一个时钟输出变为低电平------方式21.禁止计数2.使输出立即变为高电平1.初始化和计数2.计数器重新装入允许计数方式31.禁止计数2.使输出立即变为高电平1.初始化和计数2.计数器重新装入允许计数方式4禁止计数------允许计数方式5------初始化和计数------8253的工作方式一、方式0—计数结束中断方式工作原理1)在这种方式下,当控制字CW(ControlWord)写入控制字寄存器,则使OUT输出端变低,此时计数器没有赋予初值,也没开始计数。2)要开始计数,GATE信号必须为高电平,并在写入计数初值后,通道开始计数,在计数过程中OUT线一直维持为低,直到计数到“0”时。OUT输出变高。特点:1)软件启动(写入计数初值时刻启动)2)GATE作用:开放、禁止计数3)OUT端输出一个宽度为m的负脉冲作用:作中断请求信号方式0的时序波形(设计数初值为3)写计数值写CWCLKGATE(允许计数高电平)WROUT00123GATE22231OUT00方式0的时序图CR-CECR-CE开始计数(下降沿)方式1—可编程序的单拍脉冲(硬件触发)工作原理在这种方式下,当CPU写控制字之后(的上升沿),输出将保持为高(若原为低,则由低变高)。当CPU写完计数值后,计数器并不开始计数,直到外部门控脉冲GATE启动之后的下一个输入CLK脉冲的下降沿开始计数,输出OUT变低。因整个计数过程中,OUT都维持为低,直到计数到0,输出变为高,因此,输出为一个单拍脉冲。若外部再次触发启动,则可以再产生一个单拍脉冲。特点:1)门控脉冲的上升沿启动计数;2)OUT输出一个宽度为n的单稳态负脉冲作用:常作监视时钟方式1的时序波形CLKGATEOUTGATEOUT开始计数WR1132132103210重新开始计数不停计数CWLSB方式1的时序图方式2—速率发生器工作原理:在这种方式下,当CPU输出控制字后,输出将为高。在写入计数值后,计数器将立即自动对输入时钟CLK计数。在计数过程中输出始终保持为高,直至计数器减到1时,输出将变低,经过一个CLK周期,输出恢复为高,且计数器开始重新计数。特点:1)CR自动重载入CE,OUT输出周期性分频信号;2)软件、硬件均可启动;3)OUT正脉冲宽度(n-1)个CLK宽度,负脉冲宽度为1个CLK宽度作用:分频器和时基信号2.方式2的时序波形方式2的时序图3213高电平1CWLSBCLKWRGATE2OUT2GATE2OUT2自动重复计数321禁止计数321重新开始计数方式3—方波速率发生器原理:1)方式3和方式2的输出都是周期性的2)区别是:方式3在计数过程中输出有一半时间为高,另一半时间为低作用:方波发生器、波特率发生器CLKWRGATE3OUT3(N=奇数)OUT3(N=偶数)高电平1543自动重复计数215(0)43CWLSB43214321方式4—软件触发选通(启动计数原理类似于方式0)工作原理在这种方式下,当写入控制字后,输出为高(原为高则保持为高,原为低则变为高)。当写入计数值后立即开始计数(相当于软件启动),当计数到0后,输出变低,经过一个输入时钟周期,输出又变高,计数器停止计数。这种方式计数也是一次性的,只有在输入新的计数值后,才能开始新的计数。区别:方式0----输出高电平(n+1CLK宽度)方式4----输出一个CLK宽度的负脉冲方式4的时序波形高电平1CWLSB3210CLK1禁止计数3213210重新开始计数CLKWRGATE4OUT4GATE4OUT4方式4的时序图方式5—硬件触发选通启动计数原理类似于方式1工作原理在这种方式下,设置了控制字后,输出为高。在设置了计数值后,计数器并不立即开始计数,而是由门控脉冲的上升沿触发启动。当计数到0时,输出变低,经过一个CLK脉冲,输出恢复为高,停止计数。要等到下次门控脉冲的触发才能再计数。区别:方式1OUT输出负脉冲宽度n个CLK宽度;方式5OUT输出负脉冲宽度1个CLK宽度方式5的时序波形3213210重新开始计数CWLSB32101CLKWRGATE5OUT5GATE5OUT5开始计数不停计数方式5时序图8253工作方式小结1。单次计数(方式0/1/4/5)/循环计数(方式2/3)(OUT是否可输出周期性信号);2。软件启动(方式0/2/3/4)/硬件启动(方式1/2/3/5);3。输出信号特点周期性(方式2/3)高低电平宽度负脉冲宽度(方式0/1与计数初值有关,方式4/5一个CLK宽度)初始化编程的内容为:先写入每一个计数器的控制字,然后写入计数器的计数值。在有些方式下,写入计数值后此计数器就开始工作了,而有的方式需要外界门控信号的触发启动。在初始化编程时,某一计数器的控制字和计数值,是通过两个不同的端口地址写入的。1)任一计数器的控制字都是写入至控制字寄存器(地址总线低两位A1A0=11),由控制字中的D7D6来确定是哪一个计数器的控制字;2)而计数值是由各个计数器的端口地址写入的。7.2.38253-5的初始化初始化编程的步骤为:(1)写入计数器控制字,规定计数器的工作方式。(2)写入计数值。①若规定只写低8位,则写入的为计数值的低8位,高8位自动置0。②若规定只写高8位,则写入的为计数值的高8位,低8位自动置0。③若是16位计数值,则分两次写入,先写入低8位,再写入高8位(均写入同一个计数端口地址)。例7-1:要求计数器0工作于方式3,输出方波的重复频率为2KHz,计数脉冲输入为2.5MHz,采用BCD码计数,试写出初始化程序段。计算计数初值:TC=输出周期/输入周期=输入频率/输出频率TC=2.5MHz/2KHz=1250方式字为:00110111B=37H(计数器0,写16位,方式3,BCD计数)设端口地址为:80H、81H、82H、83H。则初始化程序为:MOVAL,37H;写入方式控制字OUT83H,ALMOVAL,50H;写入计数初始值低8位OUT80H,ALMOVAL,12H;写入计数初始值高8位OUT80H,AL(3)读计数值①以普通对计数器端口读的方法取得当前计数值②锁存计数器的当前值(RL1RL0=00)需要考虑读到数据的稳定性练习1定时器8253A-5通道0按方式3工作,时钟CLK0的频率为1MHZ,要求输出方波的频率为40kHz,此时写入的计数初值应为多少?输出方波的“1”和”0”各占多少时间?(p2577.47.10)解:计数次数=输入频率/输出频率=1MHz/40kHz=25若以BCD码方式计数,则计数初值=25H输入周期=1/1M=1µs每个输出周期中高低电平各占一半(初值为偶数),高电平比低电平多1个“1”占时间=13×1µs=13µs“0”占时间=12×1µs=12µs设8253-5的地址范围:20h~23h若以BCD码方式计数,则计数初值=25H方式控制字:00010111B=17h初始化程序段:MOVAL,17HOUT23H,ALMOVAL,25HOUT20H,AL思考:若要求采用二进制计数,程序怎么修改计数初值=19HMOVAL,17HOUT23H,ALMOVAL,19HOUT20H,AL解:输入时钟的周期T=1/f=1/1MHz=1µs采用BCD码计数,所以计数次数=80定时时间=计数次数*输入时钟周期=80*1µs=80µs练习2定时器8253输入时钟频率为1MHZ,并设定为BCD码计数,若写入的计数初值为0080H,则该通道的定时时间是多少?(p2577.5)练习3(P2587.7)8253A-5的计数通道0连接如图所示,试回答:(1)计数通道0工作于何种方式,并写出工作方式名称;(2)写出计数通道0的计数初值(列出计算式)(3)写出初始化程序D7-D0RDWRA0A1CS8253GATE0CLK0OUT0+5V400ns1ms解:(1)由于GATE0是一直保持高电平的情况下,输出为重复周期信号,因此工作方式只能是方式2/3两种之一;而且每个输出周期中出现的是一个CLK宽度的负脉冲,因此可以判断计数通道0工作于方式2(2)因为CLK周期宽度为400ns,输出周期宽度为1ms计数通道0的计数初值=1ms/400ns=2500(3)初始化程序段(设8253的口地址为:80H-83H)MOVAL,00110101B;;通道0,16位计数,方式2,BCD码计数MOV83H,ALMOVAL,00HOUT80H,ALMOVAL,25HOUT80H,AL7.2.48253-5的应用举例一、用8253-5监视一个生产流水线1.硬件设计OUT0CLK0GATE08253CLK1
本文标题:第7章 可编程定时器计数器
链接地址:https://www.777doc.com/doc-5097460 .html