《第9章定时计数器.ppt》由会员分享,可在线阅读,更多相关《第9章定时计数器.ppt(57页珍藏版)》请在课桌文档上搜索。
1、9.1 定时/计数的基本概念9.2 8253的工作原理9.3 8253的应用举例,第9章 可编程定时/计数器8253及其应用,所谓定时(计数)就是通过硬件或软件的方法产生一个时间基准,以此来实现对系统的定时或延时控制。实现定时或延时有三种主要方法:软件定时纯硬件定时可编程的硬件定时器/计数器,9.1 定时/计数的基本概念,1.软件定时方法:由于执行每条指令都需要时间,故可循环执行某一段指令产生延迟时间。特点:这种方法由于要完全占用CPU的时间,因而降低了CPU的利用率,但硬件开销少,使用灵活。,例:某一LED灯控系统,要求控制LED灯亮0.5s后熄灭。选择软件定时法,控制程序段如下:,SUBC
2、X,CXMOV AL,01H;灯亮控制码OUTPORT,AL;PORT为端口地址L:LOOP L;循环216次,约0.5秒MOVAL,00H;灯灭控制码OUTPORT,AL,LOOP指令执行占17个时钟周期,设时钟=2MHz,时钟周期=0.5us,0.5us*17*216=0.5s。,2.纯硬件定时方法:采用固定的电路,如可以采用小规模集成电路555,外接电阻和电容构成单稳延时电路。特点:定时电路简单,而且通过改变电阻和电容,可以使定时在一定的范围内调整。但使用不灵活。,3.可编程硬件定时器/计数器 是目前在控制系统中广泛使用的方法,它通过编程来控制电路的定时值及定时范围。在计算机系统中,象定
3、时中断、定时检测、定时扫描等等都是用可编程定时器来完成定时控制的。特点:功能强,使用灵活,定时时间精确(由软件设置),提高CPU的利用率。,Intel 系列的8253、8254就是常用的可编程定时/计数器。8253的主要性能:*具有3个独立的16位计数器通道;*每个计数器均可按二进制或二十进制计数;*每个计数器的计数速率高达2MHz(8254为10MHZ);*每个通道有6种工作方式,可由程序设置和改变;*所有的输入输出都与TTL兼容。可用在多种场合,如方波发生器、分频器、实时时钟、事件计数等方面。,一、8253的内部结构和引脚信号内部结构 数据总线缓冲器 它与CPU的数据总线相连,是8位双向三
4、态缓冲器。CPU通过这个缓冲器对8253进行读/写操作。读/写控制逻辑 有CS、RD、WR、A0、A1信号。控制字寄存器 只能写入,初始化时由CPU写入控制字来设置计数器的工作方式。计数器 3个独立的结构相同的16位减法器,可作定时/计数器使用;计数器可按二进制/BCD方式减法计数,从预置值减到零时,OUT端输出一信号。,9.2 Intel8253的工作原理,图9.1 Intel 8253的内部结构,图9.2 Intel 8253的外部引脚图,外部引脚,GATE:门控信号,当GATE为低电平时,禁止计数器工作;GATE为高电平时,才允许计数器工作。CLK:计数脉冲输入。OUT:脉冲输出。当计数
5、到“0”时,从OUT端输出信号,输出信号的波形取决于工作方式。CS、RD、WR、A0、A1共同结合,用于对8253进行端口操作,如表9-1所示。,表9-1 8253的端口选择,图9.3 8253的控制字,二、8253的控制字,SC1、SC0:这两位决定这个控制字是哪一个计数器的控制字。RL1、RL0:设置数据读/写格式。在读取计数值时,可令RL1、RL0=00,先将写控制字时的计数值锁存,然后再读取。M2、M1、M0:设置每个计数器的工作方式。BCD:用于选择每个计数器的计数制。在二进制计数时,计数初值的范围是0000HFFFFH,其中0000H是最大值,代表65536。在BCD码计数时,计数
6、初值的范围中0000 9999H,其中,0000是最大值,代表10000。,Intel 8253的每个计数器都有6种工作方式。6种方式的主要区别是:输出的波形不同,计数过程中GATE信号对计数操作的影响不同,启动计数器的触发方式不同等。1.方式0计数结束中断方式 该方式的波形如图9.4所示,这种方式的特点是:,三、8253的工作方式,*CW写入,OUT=0;*写入时常,通道开始计数;*计数到零,OUT=1;,*计数器只计数一遍;*OUT是N+1个CLK后变高;*计数过程中,GATE=0,计数暂停;*计数过程中可改变计数值;*可用OUT信号作为中断请求。,图9.4 方式0波形图,方式0计数过程中
7、改变计数初值,方式0特点:写入控制字后,OUT输出端变为低电平。当写入计数初值后,计数器开始减1计数(相当于软件触发启动)。直到计数到0时,OUT输出变为高电平。期间共记录n+1个脉冲,即:Tout n TCLK(该方式作定时用时不够准确)但此信号可用于向CPU发出中断请求。计数器只计数一遍。当计数到0时,不恢复计数初值,不开始重新计数,且输出一直保持为高电平。只有在写入新的计数值时,OUT才变低,并开始新的计数。,GATE是门控信号,GATE=1时允许计数,GATE=0时,禁止计数。在计数过程中,如果GATE=0则计数暂停,当GATE=1后接着计数。在计数过程中可改变计数值。,*写入控制字O
8、UT=1,写入常数不计数;*GATE上升沿启动计数,OUT=0,硬件触发;*计数到,OUT=1。,*单拍脉冲宽度为N;*由GATE重新启动;*计数中,可重新启动;*计数中,可改变计数值,再次启动时有效。,图9.5 方式1的波形图,2.方式1可编程单稳态输出方式,方式1特点:写入控制字后,输出OUT将保持为高电平,计数由GATE上升沿触发启动(相当于硬件触发启动)。GATE启动之后,OUT变为低电平,当计数到0时,OUT输出高电平,从而在OUT端输出一个负脉冲,负脉冲的宽度为n个(计数初值)CLK的脉冲宽度。Tout=n TCLK(定时准确)当计数到0后,不用送计数值,可再次由GATE脉冲启动,
9、输出同样宽度的负的单脉冲。,在计数过程中,可改变计数初值,此时计数过程不受影响。如果再次触发启动,则计数器将按新输入的计数值计数。在计数未到0时,如果GATE再次启动,则计数初值将重新装入计数器,并重新开始计数。,图9.6 方式2波形图,*写入控制字OUT=1;*写入常数立即对CLK计数;*计数到1,OUT=0;*一个CLK周期后,OUT=1,重新计数。,*通道连续工作不需重置时间常数;*计数过程中,GATE=0,计数暂停,GATE变高后重新计数;*计数过程中可改变计数值;新的计数值在下一次有效。,3.方式2比率发生器(分频器),方式2的特点是:写入控制字后,输出将变为高电平。写入计数值后,计
10、数立即开始。在计数过程中输出始终为高电平,直至计数器减到1时,输出将变为低电平。经过一个CLK周期,输出恢复为高,且计数器开始重新计数。因此,它能够连续工作,输出固定频率的脉冲。如果计数值为N,则每输入N个CLK脉冲,输出一个脉冲。因此,相当于对输入脉冲的N分频。通过对N赋不同的初值,即可在输出端得到所需的频率,起到频率发生器的作用。,计数过程可由门控脉冲控制。GATE=1允许计数,当GATE=0时,暂停计数;当GATE变高自动恢复计数初值,重新开始计数。在计数过程中可以改变计数值,这对正在进行的计数过程没有影响。但在计数到1时输出变低,经过一个CLK周期后输出又变高,计数器将按新的计数值计数
11、。,方式3的波形如图9.7所示。它的特点是:输出为周期性的方波。若计数值为N,则输出方波的周期是N个CLK脉冲的宽度。,图9.7 方式3波形,4.方式3 方波发生器,与方式2的区别在于:输出为周期是N个CLK脉冲的方波。若计数值为偶数,则输出对称方波。每个CLK使计数值减2,计到0,OUT改变状态,重装计数值开始新的计数。如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N-1)/2个CLK脉冲期间输出为低电平。GATE信号能使计数过程重新开始。GATE=1允许计数,GATE=0禁止计数。停止后OUT将立即变高开,当GATE再次变高以后,计数器将重新装入计数初值,重新开始计
12、数。,方式4的波形如图9.8所示,这种方式的特点是:写入控制字后,输出为高电平。写入计数值后立即开始计数(相当于软件触发启动),当计数到0后,输出一个时钟周期的负脉冲,计数器停止计数。只有在输入新的计数值后,才能开始新的计数。当GATE=1时,允许计数,而GATE=0,禁止计数。GATE信号不影响输出。在计数过程中,如果改变计数值,则按新计数值重新开始计数。如果计数值是16位,则在设置第一字节时停止计数,在设置第二字节后,按新计数值中开始计数。,5.方式4软件触发选通,图9.8 方式4波形,方式5的波形如图9.9所示,这种方式的特点是:写入控制字后,输出为高电平。在设置了计数值后,计数器并不立
13、即开始计数,而是由门控脉冲的上升沿触发启动。当计数到0时,输出一个CLK周期的负脉冲,并停止计数。当门控脉冲再次触发时才能再计数。在计数过程中如果再次用门控脉冲触发,则使计数器重新开始计数,此时输出还保持为高电平,直到计数为0,才输出负脉冲。如果在计数过程中改变计数值,只要没有门控信号的触发,不影响计数过程。当有新的门控脉冲的触发时,不管是否计数到0,都按新的计数值计数。,6.方式5硬件触发选通,图9.9 方式5波形,1.输出端OUT的初始状态 只有方式0是在写入控制字后输出为低,其它均为高;,2.计数值的设置 任一种方式,只有在写入计数值后才能开始计数,方式0、2、3、4在写入计数值后,计数
14、自动开始,方式1、5需外部触发,才开始计数。方式0、1、4初始化后仅有效一次。方式2、3、5会在计数器减为0时,自动将初值再装入。,四、8253工作方式小结,6种方式各有特点,适用于不同的应用场合。方式0,1相似,方式2,3相似,方式4,5相似。,计数值N与输出波形的关系,3.门控信号的作用:GATE输入总是在CLK输入时钟的上升沿被采样。在方式0,2,3,4中,GATE输入是电平起作用。在方式1,2,3,5中 GATE输入是上升沿起作用的。,8253的初始化编程步骤 接通电源时8253处于未定义状态,必须首先对其进行初始化,初始化步骤(分别对每个计数器进行):写控制字。写计数初值,如果计数值
15、是16位的,则先写低8位再写高8位。,9.3 8253的应用举例,*对3个通道的编程没有先后顺序的规定,只要符合先写入控制字,后写入计数初值的规定即可。,例:设一个8253在某系统中的端口地址40H43H,如果要将计数器0设置为工作方式3,计数初值为3060H,采用二进制计数法,则初始化方法如下:MOVAL,36H;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数)OUT43H,AL;写入控制寄存器MOVAX,3060H;设置计数值OUT40H,AL;写低8位至计数器0MOVAL,AHOUT40H,AL;写高8位至计数器0,例1:某8253端口地址为F8HFBH,欲用通道0
16、以方式1,按BCD计数,计数值为5080。,1.确定通道控制字;2.计数值的低8位为80;3.计数值的高8位为50。,初始化程序为:MOV AL,33HOUT 0FBH,ALMOV AL,80HOUT 0F8H,ALMOV AL,50HOUT 0F8H,AL,在计数过程中,8253读计数器现行值的方法:(将计数值存入内部锁存器),MOV AL,03H;计数器0的锁存命令OUT 0FBH,AL;写入控制寄存器IN AL,0F8H;读低8位MOV CL,AL;存入CL中IN AL,0F8H;读高8位MOV CH,AL;存入CH中,8253的应用举例,例2:用8253产生各种定时波形。,要求:(1)
17、通道0输出频率为2KHz的方波;(2)通道1产生宽度为1ms的负脉冲;(3)通道2以硬件方式触发,输出单脉冲时间常数为26。,已知:8253基地址为310H,3通道所用时钟脉冲频率为1MHz。,分析:通道0工作于方式3,控制端GATE0接+5V,时间常数N0=1MHz/2KHz=500;通道1工作于方式1,由控制端GATE1的正跳变触发,OUT1的宽度为时常,单次触发,时间常数N1=1ms/0.001ms=1000;通道2工作于方式5,由控制端GATE2的正跳变触发,可连续触发,时间常数N2=26。,;通道0初始化程序MOV DX,316HMOV AL,00110111BOUT DX,ALMO
18、V DX,310H MOV AL,00HOUT DX,ALMOV AL,05HOUT DX,AL,;通道1初始化程序MOV DX,316HMOV AL,01110011BOUT DX,ALMOV DX,312H MOV AL,00HOUT DX,ALMOV AL,10HOUT DX,AL,;通道2初始化程序MOV DX,316HMOV AL,10011011BOUT DX,ALMOV DX,314H MOV AL,26HOUT DX,AL,例3:8253控制LED。要求:LED点亮10秒,熄灭10秒。,分析:8253的地址线与CPU高8位数据线D8D15相连,8253的各端口的地址为81H、8
19、3H、85H、87H。OUT1输出占空比为1:1的方波,周期20秒。8253端口1工作在方式3。,时钟频率为2MHz时,16位计数通道的最大定时时间为:0.5s65536=32.768ms,分频系数:2MHz/0.05Hz=40,000,000级连:通道0输出400Hz脉冲(时常5000),通道1输出0.05Hz方波(时常8000)。,;通道0初始化程序MOV AL,00110101BOUT 87H,ALMOV AL,00HOUT 81H,ALMOV AL,50HOUT 81H,AL,;通道1初始化程序MOV AL,01110111BOUT 87H,ALMOV AL,00HOUT 83H,AL
20、MOV AL,80HOUT 83H,AL,因单通道最大分频系数为65536,所以需用几个通道级连的方法来解决这个问题。通道0:CLK0:接2MHz时钟信号,方式2,N0=5000;通道1:CLK1:接OUT0,方式3,N1=8000;,例4:用8253设计一个自动计数系统(计数500向CPU提出中断申请)。,8253端口地址:F0H,F2H,F4H,F6H,,8253工作方式:计数器1工作于方式0,按BCD计数,先读写低字节,后读写高字节。,;通道1初始化程序MOV AL,01110001BOUT 0F6H,ALMOV AL,99HOUT 0F2H,ALMOV AL,04HOUT 0F2H,A
21、L,;方法2读通道1计数值程序MOV AL,01000000BOUT 0F6H,ALIN AL,0F2HMOV AH,ALIN AL,0F2HXCHG AH,AL,当前计数值的读取(1)利用GATE控制信号,使计数器停止计数。故干扰了计数过程,需要硬件电路配合。(2)利用计数器锁存命令锁存现行计数值,就可从相应的计数器通道中读取计数值。,8253在IBM PC/XT机的应用 在IBM PC/XT机中,8253主要提供系统时钟中断、动态RAM的刷新定时及喇叭发声控制等功能。8253的初始化是在计算机启动时由BIOS完成的。从8284时钟发生器来的频率2.386364MHZ经二分频后作为8253三
22、个计数器的时钟输入,8253在IBM-PC/XT中的端口地址为40H43H,这三个计数器在系统中的初始化程序如下:,8253在IBM-PC/XT机的应用的示意图,计数器0用于定时中断(约55ms)OUT0(f=1.19318MHz/65536=18.2Hz的方波)经系统板上的IRQ0送到8259的IR0,使计算机每秒钟产生18.2次的中断(即每隔55ms申请一次),CPU可以此作为时间基准。如计65536次中断就为1小时。MOVAL,36H;计数器0,方式3,写两个字节,二进制计数OUT43H,AL;控制字送控制字寄存器MOVAL,0;计数值为最大值OUT40H,AL;写低8位OUT40H,A
23、L;写高8位,计数器1用于定时(15s)DMA请求 8253通道1和8237通道0构成刷新电路,8253通道1每隔15us请求一次DMA读操作。f=1/15us=66666.67Hz,故分频系数=1193180Hz/66666.67Hz=18(即初值)MOVAL,54H;计数器1,方式2,只写低8位,二进制计数OUT43,ALMOVAL,12H;初值为18OUT41H,AL,计数器2用于产生约900HZ的方波送至扬声器MOVAL,B6H;计数器2,方式3,写两字节,二进制计数OUT43,ALMOVAX,0533H;计数初值为533HOUT42H,AL;写低8位MOVAL,AHOUT42H,AL
24、;写高8位,写出定时器8253和中断控制器8259A的端口地址。计算8253通道0的时间常数写出8253计数通道0的方式控制字和初始化程序段。CPU在响应8259A的中断后,CPU何时从何处得到中断矢量号?得到的中断向量号是多少?CPU在响应中断后从哪几个内存单元取出中断服务程序的入口地址,Intel8254是Intel 8253的改进型,它们在操作方式及引脚排列上完全相同。相比8253,8254主要改进的内容是:1.计数频率高 8254的计数频率可由直流至6MHz,8254-2可高达10MHz。而8253最高只能达到2.6MHz。,9.4 Intel 8254简介,2.有读回命令(写入至控制
25、字寄存器)如果控制字寄存器D7=1,D6=1,D0=0,即为8254的读回命令,其格式如图9.12所示。这个命令可以使三个计数器的计数值一次锁存,而在8253则需要写入三个命令。,图9.12 8254的读回命令,另外,在8254中每个计数器都有一个状态字,当要读取时,也可由读回命令进行锁存。其状态字的格式如图9.13所示。,图9.13 8254的状态字格式,M,2,M,1,M,0,BCD,RW,0,RW,1,OUTPUT,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0:OUT引脚是低电平,1:OUT引脚是高电平,0:计数值有效,1:无效计数值,其中,D0D5与方式控制字对应位的意义相同。即为写入此计数器的控制字的相应部分。D7表示OUT引脚的输出状态。D6表示计数初值是否已装入减1计数器,D6=0表示已经装入,可以读取计数器。,