第9章计数器定时器.ppt

上传人:sccc 文档编号:5284787 上传时间:2023-06-22 格式:PPT 页数:38 大小:1.82MB
返回 下载 相关 举报
第9章计数器定时器.ppt_第1页
第1页 / 共38页
第9章计数器定时器.ppt_第2页
第2页 / 共38页
第9章计数器定时器.ppt_第3页
第3页 / 共38页
第9章计数器定时器.ppt_第4页
第4页 / 共38页
第9章计数器定时器.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《第9章计数器定时器.ppt》由会员分享,可在线阅读,更多相关《第9章计数器定时器.ppt(38页珍藏版)》请在三一办公上搜索。

1、第9章 计数器/定时器,9.1 概述9.2 可编程计数器/定时器82539.3 8253的应用,9.1 概述,在许多微机系统中,动态存储器的刷新定时、系统日历时钟的计时以及喇叭的声源,都是用定时信号来产生的。在计算机实时控制和处理系统中,计算机主机需要每隔一定的时间就对处理对象进行采样,再对获得的数据进行处理,这也要用到定时信号。,主要有三种方法,软件定时即让计算机执行一个延迟程序段。通过正确地挑选指令和安排循环次数很容易实现软件定时。优点是节省硬件,但主要缺点是执行延迟程序期间,CPU一直被占用,降低了CPU的效率。不可编程的硬件定时可以采用小规模集成电路器件如555,外接电阻和电容构成。这

2、样的定时电路简单,而且通过改变电阻和电容,可以使定时在一定的范围内改变。但是,这种定时电路在硬件连接好以后,定时值及定时范围不能由程序(软件)来控制和改变。可编程定时器电路的定时值及定时范围可以很容易地由软件来确定和改变,功能较强,使用灵活。这种方法最突出的优点是计数时不占用CPU的时间,并且如果利用定时器产生中断信号,就可以建立多作业的环境,所以,可以大大提高CPU的利用率。加上计数器/定时器本身的开销并不很大,因此,这种方法受到广泛应用。,9.2 可编程计数器/定时器8253,8253的主要功能有:(1)有3个独立的、功能相同的16位减法计数器。(2)每个计数器都可以按照二进制或BCD码进

3、行计数。(3)每个计数器的计数速率可高达2MHz。(4)每个计数器有6种工作方式,可由程序设置和改变。(5)所有的输入输出引脚电平都与TTL电平兼容。9.2.1 8253的内部结构和引脚特性9.2.2 8253的控制字9.2.3 8253的工作方式9.2.4 8253的编程,9.2.1 8253的内部结构和引脚特性,1.8253的内部结构,8253内部有3个计数器,分别称为计数器0、计数器1和计数器2,它们的结构完全相同。每个计数器的输入和输出都决定于本身所带的控制寄存器的控制字,互相之间工作完全独立。每个计数器通过3个引脚和外部联系,1个为时钟输入端CLK,1个为门控信号输入端GATE,另1

4、个为输出端OUT。每个计数器内部有1个8位控制寄存器CW、1个16位计数初值寄存器CR、1个16位减1计数执行部件CE和1个16位输出锁存器OL。,2.8253的引脚信号和功能,9.2.2 8253的控制字,1.8253控制字2.8253的初始化编程,1.8253控制字,2.8253的初始化编程,对8253编程常有2种操作:1)初始化写操作2)读当前计数值操作,1)写操作-8253的初始化编程,首先设置控制字。需要用几个计数器,就要写几次控制字,不过控制寄存器地址都相同。写入控制字,还起到复位作用:使该计数器清零及OUT端变为规定的初始状态。向已选定的计数器写入计数初值。但写初值时要注意:编程

5、写入时必须按相应控制字中的要求顺序写入。正确选定初值是二进制数还是BCD码数。由于3个计数器完全独立,有各自的端口地址,因此对这3个计数器分别初始化编程并没有先后次序要求。但是,对任一计数器初始化时必须先写控制字,再写计数初值。,2)读当前计数值-先锁存,再读操作,在计数过程中,OL实时跟随CE,并不锁存其实时值;只有接到锁存指令时,OL立即锁存当前值,不再跟随CE变化,而同时CE仍照常继续减l计数。CPU将锁定值用输入指令读走时,锁存器自动失锁,又跟随CE实时变化。具体编程为:先写锁存命令控制字(即设置控制字的RL1、RL0为00)。再读该计数器口地址。,9.2.3 8253的工作方式,82

6、53有6种方式工作。不论用哪种方式工作,都会遵守下面几条基本规则:控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态(高电平或者低电平)。初始值写入以后,要经过时钟的一个上升沿和一个下降沿,计数执行部件才开始进行计数。通常,在时钟脉冲CLK的上升沿,门控信号GATE被采样。在时钟脉冲的下降沿,计数器作减1计数。0是计数器所能容纳的最大初始值,当选用二进制时,0相当于216;用BCD码时,0相当于l04。,1.方式0-可编程阶跃信号发生器,能使OUT端产生正阶跃信号,常被用来作为中断请求信号。,2.方式1-可编程单稳态输出方式,能使OUT端产生单脉冲波形信号,单脉冲宽度可由

7、程序设定。,3.方式2-可编程频率发生器/分频器,使OUT端输出固定频率的脉冲,输出脉冲周期等于n个CLK脉冲的宽度,也相当于对CLK信号n分频。这种方式给自动控制中的实时检测、实时控制提供了实时时钟,也可作为一个可编程脉冲速率发生器。,4.方式3-可编程方波发生器,方式3与方式2工作原理相似,但输出波形则为占空比1:1或近似1:1的连续方波或矩形波。,方式4-可编程软件触发的选通信号发生器,计数器主要靠写入新的计数初值来触发计数器工作,所以常称它为软件触发。OUT端输出的负单脉冲信号常作为选通信号使用;另外还可用作定时功能,定时时间为n个CLK周期。,方式5-可编程硬件触发的选通信号发生器,

8、方式5与方式l工作原理相似,由门控信号GATE的上升沿触发计数器计数,但OUT端输出波形为单脉冲选通信号,同方式4。,7.8253工作小结,8253有6种不同的工作方式,它们的特点不同,因而应用的场合也就不同。8253没有复位RESET输入,开机加电后,其工作方式和OUT端输出都是不确定的,必须对其进行初始化编程,初始化编程包括写控制字和写计数初值。先写控制字,使OUT端输出初始状态电平,其中只有方式0的初始状态为OUT端输出低电平,其它方式的初始状态都是OUT端输出高电平。OUT端输出波形都是在CLK脉冲下降沿时产生电平的变化。门控信号的触发方式有二种;高电平触发,上升沿触发。方式0、4中G

9、ATE为高电平触发;方式l、5中GATE为上升沿触发;方式2、3中GATE既可用高电平触发也可用上升沿触发。方式0与方式1的OUT端输出波形类似,在计数过程中都保持低电平,计数结束立即变为高电平,这种正阶跃信号输出常可用作中断请求信号。但它们的OUT端初始状态不一样,方式0的OUT端输出正阶跃信号,方式1的OUT端输出负单稳态脉冲波。,7.8253工作小结(续),方式2与方式3有一共同的特点,都具有减到0后计数初值自动再重装功能,所以OUT端都能输出连续的波形。它们主要的区别在于占空比不同,方式2输出连续的负脉冲波,其中负脉冲宽仅为一个CLK脉冲,而周期为n个CLK脉冲;方式3输出连续方波或矩

10、形波,占空比为1:1或近似1:1。方式4与方式5的输出波形相同,它们主要区别是计数启动的触发信号不同,方式4由写计数初值指令的上升沿启动计数,方式5由GATE上升沿启动计数。6种工作方式都受GATE门控信号的控制。在使用计数器前,必须先写入计数初值n。在某些工作方式下初值只能用一次,如下次要用,必须重新写入初值n;而在另外些方式下,能自动重新装入初值n实现循环计数。方式0:写入的初值n一次有效 方式1:写入的初值n一次有效,但可触发重装 方式2:写入的初值n能自动重装 方式3:写入的初值n能自动重装 方式4:写入的初值n一次有效 方式5:写入的初值n一次有效,但可触发重装6种工作方式在计数过程

11、中都可写入新计数初值,但是在不同方式时对当前计数及OUT输出的影响各不相同。,9.2.4 8253的编程,1.8253的初始化编程2.8253计数值的读取编程,1.8253的初始化编程,初始化编程的步骤为:(1)写控制字,规定计数器的工作方式。(2)写计数初值。若规定只写低8位,则写入的为计数初值的低8位,高8位自动置0。若规定只写高8位,则写入的为计数初值的高8位,低8位自动置0。若是16位计数初值,则分两次写入,先写入低8位,再写入高8位。,例子,若要使计数器0工作在方式1,按BCD码计数,计数初值为5080,若端口地址分别为F8HFBH,则初始化程序为:MOV AL,33H OUT 0F

12、BH,AL;向计数器0写控制字 MOV AL,80H OUT 0F8H,AL;向计数器0写计数初值的低8位 MOV AL,50H OUT 0F8H,AL;向计数器0写计数初值的高8位注意:采用BCD码计数时,计数初值为十进制数,但在初始化写初值时,一定要在十进制数值后加十六进制后缀H。,2.8253计数值的读取编程,CPU可以用输入指令读取8253任一计数器的计数值,此时CPU读到的是执行输入指令瞬间计数器的现行值。8253的计数器是16位的,要分两次读至CPU,在读入过程中,计数值可能发生变化。因此,在读取计数值之前,需对现行计数值进行锁存。,例子,若要读取计数器1的16位计数值,端口地址分

13、别为F8HFBH,其程序为:MOV AL,40H OUT 0FBH,AL;向计数器1写控制字,实现锁存 IN AL,0F9H;读低8位计数值 MOV CL,AL;保存至CL IN AL,0F9H;读高8位计数值 MOV CH,AL;保存至CH,9.3 8253的应用,例1:利用8253和8255实现对扬声器的控制。试设计一个程序,使扬声器发出600Hz频率的声音,按下任意键声音停止。已知8253计数器2与控制口地址为42H与43H,8255PB口的地址为61H。,&,分析,在PC/XT计算机系统中,PC机的发声系统以计数器2为核心。CLK2的输入频率1.19MHz,改变计数器初值可以由OUT2

14、得到不同频率的方波输出。计数器2定义为工作方式3,控制字为10110110B。对于要求OUT2输出600Hz的声音驱动信号,可以得出计数初值1.19MHz/600Hz=1938。,分析(续),另外,PC/XT计算机的发声系统受8255芯片B口的两个输出端线PB0、PB1的控制,PB0为1,使GATE2为1,计数器2能正常计数,可以控制扬声器何时可以发声;PB1为1,打开输出控制门,可以控制扬声器发声时间长短。,程序段,MOV AL,10110110B;对8253计数器2初始化OUT 43H,ALMOV AX,1983;设置计数值OUT 42H,ALMOV AL,AHOUT 42H,ALIN A

15、L,61H;读8255PB口当前值OR AL,03H;使PB1与PB0置1,其余位不变OUT 61H,AL;打开GATE2并且允许发声MOV AH,01HINT 21H;等待按任意键IN AL,61HAND AL,0FCH;清PB1与PB0OUT 61H,AL;停止发声,例2,利用8253定时产生中断信号。时钟信号为2MHz,输入8253时钟输入端,要求OUT0实现每5秒定时中断。设8253端口地址40H43H。,分析,8253最大初值65536,CLK=2MHz可实现最大时间间隔:655360.5s=32.769ms,很明显利用一个定时器不能达到要求。所以需要两个计数器级联,其连线图如图所示

16、。一个计数器的输出作为另一个计数器的时钟输入端输入,设2个计数器都工作在方式2。,OUT0 GATE0 CLK0 OUT1 GATE1 CLK1,8253,每5秒产生一个脉冲,+5V,+5V,2MHz,分析(续),计数器1:模式2,OUT1每5ms输出一个脉冲 计数器1初值:(2106)/(1/0.005)=10000计数器0:模式2,OUT0每5s输出一个脉冲 计数器0初值:5/0.005=1000,程序段,MOV AL,01100101B;对8253计数器1初始化OUT 43H,ALMOV AL,0OUT 41H,ALMOV AL,00100101B;对8253计数器0初始化OUT 43H

17、,ALMOV AL,01HOUT 40H,AL,例3,用8253A监视一个生产流水线,要求每通过50个工件,扬声器响5秒,频率为2KHz。设计数器0、计数器1、控制寄存器的地址为40H、41H、43H,8255A的PA口地址为80H,系统提供5秒延时子程序DL5S供调用。,分析,工件从光源和光敏电阻之间通过时,晶体管的发射极将会产生一个脉冲,此脉冲作为8253A计数器0的计数输入,当计数器0计满50后,OUT0输出负脉冲,经反相后,作为中断请求信号,即计数器0工作在方式2,采用十进制计数,计数初值为50。在中断服务程序中,用8253A的计数器1输出2KHz的方波,持续5秒后停止。因为CLK1接

18、5MHz时钟,故计数器1工作在方式3(方波发生器)。计数初值5000000/2000=2500,用十进制计数。用8255A的A端口的PA0位控制计数的启动和停止。,程序段,主程序为:MOV AL,00010101B;计数器0初始化 OUT 43H,AL MOV AL,50H;计数初值 OUT 40H,AL STI;开中断LOP:HLT;等待中断,当计满50个工件后,OUT0发;出中断请求,执行下面的中断服务程序 JMP LOP,程序段(续),中断服务程序为:MOV AL,01H;使8255的PA0=1,计数器1的GATE1置1,启动计数OUT 80H,ALMOV AL,01100111B;计数器1初始化OUT 43H,ALMOV AL,25HOUT 41H,AL;OUT1输出2KHz的方波驱动扬声器发声CALL DL5S;扬声器发声延时5秒MOV AL,00H;使8255的PA0=0,通道1的GATE1置0,停止计数OUT 80H,ALIRET;中断返回,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号