可编程计数器定时器.ppt
第八章第八章 可编程计数器可编程计数器/定时器定时器82538-1 8253简介简介8-2 8253应用举例应用举例一、一、8253结构及引脚功能结构及引脚功能二、二、8253工作方式工作方式三、三、8253初始化初始化8-1 8253简介简介定时定时/计数器的作用计数器的作用生产线上统计产品的数目生产线上统计产品的数目-计数器计数器系统的动态存储器刷新系统的动态存储器刷新-定时器定时器系统时钟计时系统时钟计时-定时器定时器扬声器的频率源扬声器的频率源-定时器定时器如何定时如何定时软件定时,由软件定时,由CPUCPU执行指令序列所花费的时间来构成执行指令序列所花费的时间来构成一定的时间间隔,从而达到定时的目的。优点是节省一定的时间间隔,从而达到定时的目的。优点是节省硬件;缺点是执行程序期间硬件;缺点是执行程序期间CPUCPU一直被占一直被占 用,降低用,降低了了CPUCPU效率。效率。例如:例如:MOV CX,HMOV CX,H HERE:LOOP HERE HERE:LOOP HERE硬件定时,要用额外的硬件硬件定时,要用额外的硬件计数计数/定时器,但可提定时器,但可提高高CPUCPU的利用率。的利用率。一、一、82538253结构及引脚功能结构及引脚功能1.1.结构:由四部分组成。结构:由四部分组成。数据总线缓冲器数据总线缓冲器8D0D7内部总线内部总线CLK0计数器计数器0GATE0OUT0计数器计数器1CLK1GATE1OUT1计数器计数器2CLK2GATE2OUT2读读/写逻辑写逻辑A0A1WRRDCS控制字寄存器控制字寄存器(1)数据总线缓冲器数据总线缓冲器u这是这是82538253与与CPUCPU的数据总线的数据总线(D(DD D)连接的连接的8 8位双向三态缓冲器。位双向三态缓冲器。u CPUCPU用用输输入入输输出出指指令令对对82538253进进行行读读写写操操作作时时的的所所有有信信息息都都通通过过这这个个缓缓冲冲器器传送。传送。(2)读读/写逻辑写逻辑u 这这是是82538253内内部部操操作作的的控控制制电电路路,它它从从系系统统控控制制总总线线上上接接收收输输入入信信号号,然然后转换成后转换成82538253内部操作的各种控制信号。内部操作的各种控制信号。(3)控制字寄存器)控制字寄存器u当地址信号当地址信号A1A1和和A0A0都为都为1 1时,访问控制字寄存器。时,访问控制字寄存器。u控控制制字字寄寄存存器器从从数数据据总总线线上上接接收收CPUCPU送送来来的的控控制制字字,并并由由控控制制字字的的D7D7、D6D6两位的编码决定控制字写入哪个通道的控制寄存器中去。两位的编码决定控制字写入哪个通道的控制寄存器中去。u由由寄寄存存在在每每个个通通道道内内的的控控制制寄寄存存器器的的内内容容决决定定该该通通道道的的工工作作方方式式,选选择择计计数器是按二进制还是数器是按二进制还是BCDBCD数计数,并确定每个计数器初值的写入顺序。数计数,并确定每个计数器初值的写入顺序。(4)计数器计数器0、计数器、计数器1、计数器、计数器2u这这是是三三个个计计数数器器/定定时时器器通通道道,每每一一个个都都由由1616位位的的可可设设置置计计数数初初值值的的减减法法计数器构成。计数器构成。u三三个个通通道道的的操操作作是是完完全全独独立立的的。每每个个通通道道都都有有两两个个输输入入引引脚脚CLKCLK和和GATEGATE以以及一个输出引脚及一个输出引脚OUTOUT。每个通道(计数器)是每个通道(计数器)是16位二进制计数器,每个计数器中有位二进制计数器,每个计数器中有3个寄存器。个寄存器。(1)初值寄存器:初始化时写入该计数器的初始值。)初值寄存器:初始化时写入该计数器的初始值。(2)减一计数器:初值寄存器写入减一计数器,减)减一计数器:初值寄存器写入减一计数器,减1到到0为止。为止。(3)计数值锁存器:在计数器工作的过程中,跟随计数值的)计数值锁存器:在计数器工作的过程中,跟随计数值的变化,在接收到变化,在接收到CPU发来的读计数值命令时,用以锁存计发来的读计数值命令时,用以锁存计数值,供数值,供CPU读取,读取完毕之后,输出锁存器又跟随减读取,读取完毕之后,输出锁存器又跟随减1计数器变化。计数器变化。&CLKGATE16位当前计数值锁存器位当前计数值锁存器16位减一计数器位减一计数器16位计数初值寄存器位计数初值寄存器OUT(减(减1至至0时)时)MSBLSB装入初值装入初值LSBMSB锁存后读锁存后读出当前值出当前值u因因82538253是减计数器,故计数初值越大,则计数减至是减计数器,故计数初值越大,则计数减至0 0所用时所用时间(即定时时间)就越长,但由于间(即定时时间)就越长,但由于82538253是先减是先减1 1,再判是否,再判是否到到0 0,故最长的定时时间是设置计数初值为,故最长的定时时间是设置计数初值为0 0,代表,代表6553665536。u十进制计数时范围是十进制计数时范围是000100011000010000,其中当计数初值寄存器,其中当计数初值寄存器为为0000H0000H代表十进制数代表十进制数1000010000。u计数取值范围在二进制计数时是计数取值范围在二进制计数时是0001H0001H10000H10000H,其中,其中10000H10000H代表代表6553665536,在计数初值寄存器中的值是,在计数初值寄存器中的值是0000H0000H。u可以从可以从82538253中读出当前计数值,但其读出过程是:先将当前中读出当前计数值,但其读出过程是:先将当前计数初值写入到输出锁存器,然后再从输出锁存器中读出,计数初值写入到输出锁存器,然后再从输出锁存器中读出,同时,同时,82538253还在不停地进行减计数,虽然输出锁存器中的值还在不停地进行减计数,虽然输出锁存器中的值不变,但减计数单元却在不断地减计数,因此,从输出锁存不变,但减计数单元却在不断地减计数,因此,从输出锁存器中读出的值并不一定是真正的当前计数值。器中读出的值并不一定是真正的当前计数值。2.2.引脚引脚3.功能功能 (1)(1)具有三个独立的具有三个独立的1616位计数通道;位计数通道;(2)(2)每个计数通道可按二进制或二十进制计数;每个计数通道可按二进制或二十进制计数;(3)(3)具有计数和定时功能,基于减具有计数和定时功能,基于减1 1计数工作;计数工作;(4)(4)定时器减为定时器减为0 0后,可自动装入定时常数初值,并产生输出后,可自动装入定时常数初值,并产生输出信号;信号;(5)(5)每个计数通道有六种工作方式;每个计数通道有六种工作方式;(6)8253(6)8253实质上是计数器,但计数器的脉冲输入端如果送定时实质上是计数器,但计数器的脉冲输入端如果送定时脉冲就可以做定时器用。作为计数器时减到脉冲就可以做定时器用。作为计数器时减到0 0之后输出一个信之后输出一个信号,此时计数过程结束;作为定时器时,减到号,此时计数过程结束;作为定时器时,减到0 0后输出一个信后输出一个信号接着自动装入计数初值并开始下一个周期的计时。号接着自动装入计数初值并开始下一个周期的计时。二、初始化二、初始化在使用在使用8253时都要由时都要由CPU对对8253写入控制字,以确定写入控制字,以确定8253的的工作方式,这个设置过程称为初始化。工作方式,这个设置过程称为初始化。初始化有两个控制命令字:方式选择控制字和计数常数字。初始化有两个控制命令字:方式选择控制字和计数常数字。方式选择字写入控制口,计数常数字写入相应通道内。方式选择字写入控制口,计数常数字写入相应通道内。例例1 1:将计数器:将计数器2 2初始化为工作方式初始化为工作方式3 3,计数初值为,计数初值为533H533H,为二进,为二进制计数方式,设寄存器地址为制计数方式,设寄存器地址为40H-43H40H-43H。控制字:控制字:10110110 B6H10110110 B6H MOV MOV AL AL,0B6H0B6H ;计数器;计数器2 2,先低后高字节,先低后高字节 OUTOUT 43H 43H,ALAL;写命令字;写命令字 MOVMOV AX AX,533H533H ;计数初值;计数初值 OUTOUT 42H 42H,ALAL;写计数值低位;写计数值低位 MOVMOV AL AL,AHAH OUT OUT 42H 42H,ALAL;写计数值高位;写计数值高位例例2 2:82538253工作为计数器工作为计数器1 1,方式,方式3 3,初值为,初值为4020D4020D,设寄存器地,设寄存器地址为址为40H-43H40H-43H。控制字:控制字:01110111 77H01110111 77H MOV AL MOV AL,77H77H OUT 43H OUT 43H,AL AL ;写计数器;写计数器 1 1 的控制字的控制字 MOV ALMOV AL,20H20H OUT 41H OUT 41H,AL AL ;写计数器;写计数器 1 1 的低的低 8 8 位初值位初值 MOV ALMOV AL,40H40H OUT 41H OUT 41H,AL AL ;写计数器;写计数器 1 1 的高的高 8 8 位初值位初值例例3 3:计数器:计数器0 0,工作在模式,工作在模式2 2,计数初值和输出锁存器仅使用低,计数初值和输出锁存器仅使用低8 8位,初值为位,初值为100100,计数值为二进制格式,设寄存器地址为,计数值为二进制格式,设寄存器地址为70H-73H70H-73H。MOV ALMOV AL,00010100B 00010100B ;控制字;控制字 OUT 73HOUT 73H,ALAL MOV AL MOV AL,100 100 ;计数初值;计数初值 OUT 70HOUT 70H,ALAL 例例4 4:计数器:计数器1 1,工作在模式,工作在模式1 1,初值为,初值为12341234,先写入低,先写入低8 8位,再位,再写高写高8 8位,计数值为二进制,设寄存器地址为位,计数值为二进制,设寄存器地址为70H-73H70H-73H。MOV ALMOV AL,01110010B01110010B;控制字;控制字 OUT 73HOUT 73H,AL AL MOV AXMOV AX,1234H1234H ;12341234装入装入AXAX转换二进制转换二进制 OUT 71HOUT 71H,ALAL ;计数初值低;计数初值低8 8位位 MOV ALMOV AL,AHAH OUT 71HOUT 71H,ALAL ;计数初值高;计数初值高8 8位位 例例5 5:读取:读取82538253通道中的计数值通道中的计数值82538253可用控制命令来读取相应通道的计数值,由于计数值是可用控制命令来读取相应通道的计数值,由于计数值是1616位的,而读取的瞬时值,要分两次读取,所以在读取计数位的,而读取的瞬时值,要分两次读取,所以在读取计数值之前,要用锁存命令,将相应通道的计数值锁存在锁存器值之前,要用锁存命令,将相应通道的计数值锁存在锁存器中,然后分两次读入,先读低字节,后读高字节。中,然后分两次读入,先读低字节,后读高字节。当控制字中,当控制字中,D5D5、D4=00D4=00时,控制字的作用是将相应通道的计时,控制字的作用是将相应通道的计数值锁存的命令,锁存计数值在读取完成之后,自动解锁。数值锁存的命令,锁存计数值在读取完成之后,自动解锁。如要读通道如要读通道1 1的的1616位计数器,编程如下:地址位计数器,编程如下:地址F8HF8HFEHFEH。MOV ALMOV AL,40H40H;OUT 0FEHOUT 0FEH,AL AL;锁存计数值;锁存计数值IN ALIN AL,0FAH0FAHMOV CLMOV CL,ALAL;低八位;低八位IN ALIN AL,0FAH0FAH;MOV CHMOV CH,ALAL;高八位;高八位三、工作方式三、工作方式8253输出(软件控制)输出(软件控制)u方式方式1:重复触发的单稳输出(硬件控制):重复触发的单稳输出(硬件控制)u方式方式2:分频器(软件控制):分频器(软件控制)u方式方式3:方波发生器(软件控制):方波发生器(软件控制)u方式方式4:选通信号发生器(软件触发):选通信号发生器(软件触发)u方式方式5:选通信号发生器(硬件触发):选通信号发生器(硬件触发)图图 8 82 25 53 3的的6 6种种工工作作方方式式时时序序图图1.1.1.1.方式方式2 2:分频器:分频器u计计数数器器减减到到1 1时时,OUTOUT仅仅输输出出一一个个CLKCLK脉脉宽宽的的低低电电平平,然然后后自自动动装入重新计数。装入重新计数。uGATEGATE由低变高会重新装入初值。由低变高会重新装入初值。u新初值在下次计数才起作用。新初值在下次计数才起作用。特点:特点:(1 1)不用重新设置计数值,通道可以连续工作。)不用重新设置计数值,通道可以连续工作。(2 2)以)以GATEGATE信号停止计数。在信号停止计数。在GATEGATE变成高电平后的下一个变成高电平后的下一个CLKCLK脉冲,计数器恢复原来的初值,重新计数。脉冲,计数器恢复原来的初值,重新计数。(3 3)改变计数值不是立即有效,)改变计数值不是立即有效,只有当计数值减至只有当计数值减至0 0时,下一时,下一轮计数过程按新初值进行。轮计数过程按新初值进行。方方式式2 2的的初初始始化化:设设计计数数器器工工作作于于方方式式2 2,二二进进制制计计数数,计计数数初初值值0304H0304H。端口地址。端口地址0E0H0E0H0E3H0E3H。MOVMOVMOVMOVALALALAL,0B4H0B4H0B4H0B4H;控制字;控制字;控制字;控制字OUTOUTOUTOUT0E3H0E3H0E3H0E3H,ALALALALMOVMOVMOVMOVALALALAL,04H04H04H04H;计数器低字节;计数器低字节;计数器低字节;计数器低字节OUTOUTOUTOUT0E2H0E2H0E2H0E2H,ALALALALMOVMOVMOVMOVALALALAL,03H03H03H03H;计数器高字节;计数器高字节;计数器高字节;计数器高字节OUT 0E2HOUT 0E2HOUT 0E2HOUT 0E2H,ALALALAL2.2.方式方式3 3:方波发生器:方波发生器u与方式与方式2 2类似,但其输出方波或准方波。类似,但其输出方波或准方波。u计计数数值值完完成成一一半半时时,使使OUTOUT变变低低,直直到到计计数数任任务务全全部部完完成成为为止止,OUTOUT恢恢复为高。复为高。u初初值值为为偶偶数数时时,每每次次减减1 1,直直至至n/2n/2时时OUTOUT输输出出变变为为低低电电平平,然然后后又又从从初初值开始,每次减值开始,每次减1 1,直至,直至n/2n/2时时OUTOUT输出变为高电平。输出变为高电平。u初初值值为为奇奇数数时时,每每次次减减1 1,减减(n+1)/2(n+1)/2次次时时,OUTOUT输输出出变变为为低低电电平平,然然后后从从(N-1)/2(N-1)/2开开始始,每每次次减减1 1,直直至至为为0 0,所所以以有有(N+1)/2(N+1)/2个个脉脉宽宽的的高高电电平平,(N-1)/2,(N-1)/2个脉宽的低电平。个脉宽的低电平。uGATEGATE由低变高时,重新开始计数。由低变高时,重新开始计数。特点:特点:(1 1)GATEGATE信号由低变高可以使计数过程重新开始。信号由低变高可以使计数过程重新开始。(2 2)改变计数初值并不影响现行的计数过程。)改变计数初值并不影响现行的计数过程。方方式式3 3的的初初始始化化:计计数数器器0 0工工作作于于方方式式3 3,二二进进制制计计数数,初初值值为为4 4。端口地址为。端口地址为0E0H0E0H0E3H0E3H。MOVMOVALAL,16H16H;控制字;控制字OUTOUT0E3H0E3H,ALALMOVMOVALAL,4 4;初值;初值OUTOUT0E0H0E0H,ALAL方式方式2 2与方式与方式3 3的比较(波形输出)的比较(波形输出)相同点相同点均输出连续周期波形,预置初值可自动重装入均输出连续周期波形,预置初值可自动重装入 不同点不同点方式方式 2 2 输出连续负脉冲周期波形输出连续负脉冲周期波形方式方式 3 3 输出连续方波周期波形输出连续方波周期波形方式方式3 3方式方式2 2用用通通道道0 0产产生生周周期期为为1ms1ms的的方方波波,其其时时钟钟输输入入端端输输入入1MHz1MHz的的方方波波脉脉冲冲信信号号。设设82538253端口地址为端口地址为210H-213H210H-213H,写出初始化程序段。,写出初始化程序段。CLK0CLK0计数脉冲的周期为计数脉冲的周期为1/1MHz=11/1MHz=1s s计数值计数值=1ms/1=1ms/1s=1000s=1000初始化程序:初始化程序:MOV AL,00110110BMOV AL,00110110BMOV DX,213HMOV DX,213HOUT DX,ALOUT DX,ALMOV AX,1000MOV AX,1000MOV DX,210HMOV DX,210HOUT DX,ALOUT DX,ALMOV AL,AHMOV AL,AHOUT DX,ALOUT DX,AL电子钟电子钟82538253初始化程序段:初始化程序段:MOV AL,00100111BMOV AL,00100111BMOV DX,113HMOV DX,113HOUT DX,ALOUT DX,ALMOV AL,40HMOV AL,40HMOV DX,110HMOV DX,110HOUT DX,ALOUT DX,ALMOV AL,01100101BMOV AL,01100101BMOV DX,113HMOV DX,113HOUT DX,ALOUT DX,ALMOV AL,10HMOV AL,10HMOV DX,111HMOV DX,111HOUT DX,ALOUT DX,AL电子钟中断子程序:电子钟中断子程序:MOV AL,MAXMOV AL,MAXADD AL,1ADD AL,1DAADAAMOV MAX,ALMOV MAX,ALCMP AL,60HCMP AL,60HJNZ NEXTJNZ NEXTMOV BYTE PTR MAX,0MOV BYTE PTR MAX,0MOV AL,MAX+1MOV AL,MAX+1ADD AL,1ADD AL,1DAADAAMOV MAX+1,ALMOV MAX+1,ALCMP AL,60HCMP AL,60HJNZ NEXTJNZ NEXTMOV BYTE PTR MAX+1,0MOV BYTE PTR MAX+1,0MOV AL,MAX+2MOV AL,MAX+2ADD AL,1ADD AL,1DAADAAMOV MAX+2,ALMOV MAX+2,ALCMP AL,24HCMP AL,24HJNZ NEXTJNZ NEXTMOV BYTE PTR MAX+2,0MOV BYTE PTR MAX+2,0NEXT:MOV AL,20HNEXT:MOV AL,20HOUT 20H,ALOUT 20H,ALIRETIRET