第8章计数器和定时器_第1页
第8章计数器和定时器_第2页
第8章计数器和定时器_第3页
第8章计数器和定时器_第4页
第8章计数器和定时器_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

定时器/计数器8253实现定时功能的三种方法:(1)软件定时:

只需运行一些指令达到延时一段时间的目的.(2)不可编程的硬件定时:

如555芯片,外加电阻和电容即可构成定时电路.(3)可编程定时器/计数器电路:

利用硬件电路和中断方法控制定时,

定时时间和范围则有软件来确定和改变,

并有微处理器的时钟信号提供时间基准.

如INTEL8253,8254.定时/计数概述软件定时:节省硬件,主要缺点是执行程序期间,CPU一直被占用,所以降低了CPU的效率,也不容易提供多作业环境。需要用指令去拼凑延时时间,显得比较麻烦。硬件定时:在简单的软件控制下,产生准备的时间延迟。这种方法的思想是根据需要定时的时间,用指令对计数器/定时器设置定时常数,然后再启动计数器/定时器。在计数器/定时器开始工作以后,CPU不需要管它,而可以做别的工作。优点在于计数时不占用CPU的时间,可以建立起多作业的环境,可以大大提高CPU的效率。可编程定时/计数器的主要用途有:以均匀分布的时间间隔中断分时操作系统,以便切换程序;向I/O设备输出精确的定时信号,该信号的周期可由程序控制;用作可编程波特率或速率发生器;检测外部事件发生的频率或周期;统计外部实验过程中某一事件发生的次数;在定时或计数达到编程规定的值以后,产生输出信号、也向CPU申请中断。10可编程时间间隔定时器芯片82538253是一种实现定时和计数功能的外围电路,拥有3个独立的16位计数器,每个计数器都可通过程序设计的方法设定为实现定时功能的各种操作方式。可编程时间间隔定时器芯片8253有以下几个特点:与所有Intel系列微处理器兼容

3个独立的16位的计数器最大计数范围为0~655356种可编程的计数模式8253内部结构

8253的内部结构如图10-1所示,该芯片内部由数据总线缓冲器、控制寄存器、读/写控制逻辑以及计数器等组成

8253内部结构

一、数据总线缓冲器

该缓冲器为8位双向三态的缓冲器,可直接挂在数据总线上。通过它,一方面可以向控制寄存器写入控制字,向计数器写入计数初值;另一方面也可由CPU通过该缓冲器读取计数器的当前计数值二、读/写控制逻辑读/写逻辑的功能是接收来自CPU的控制信号,包括读信号、写信号、片选信号和芯片内部寄存器的寻址信号A1、A0,并完成对8253各计数器的读/写操作8253内部结构

三、控制字寄存器

接收来自CPU的控制字,并由控制字D7、D6位的编码决定该控制字写入哪一个计数器的控制寄存器中

四、计数器

8253有3个独立的计数器通道,每个通道的结构完全相同。每一个通道有一个16位减法计数器,还有对应的16位初值寄存器和输出锁存器。计数开始前写入的计数初值存于初值寄存器;计数过程中,减法计数器的值不断递减,而初值寄存器中的初值不变。输出锁存器则用于写入锁存命令时锁定当前计数值

8253每个计数器的内部逻辑图9.2.28253的引脚信号

8253有24条引脚,双列直插式封装,如图10-2所示一、与CPU一侧的接口信号

D0~D7,三态双向数据线。与CPU数据总线相连,用于传递CPU与8253之间的数据信息、控制信息和状态信息8253的引脚信号

片选信号,输入,低电平有效。有效时,表示8253被选中,允许CPU

对其进行读/写操作。通常连接到I/O端口地址译码电路的输出端,写信号,输入,低电平有效。用于控制CPU对8253的写操作,可与A1、A0信号配合以决定是写入控制字还是计数初值

,读信号,输入,低电平有效。用于控制CPU对8253的读操作,可与A1、A0信号配合读取某个计数器的当前计数值

A1

、A0,地址输入线。用于寻址8253内部的4个端口,即3个计数器和一个控制字。一般与CPU低位的地址线相连,8253的读/写操作逻辑如表9-3所示

8253的引脚信号

表10-18253读/写操作逻辑A1

A0

操作功能

01000计数初值装入计数器0

01001计数初值装入计数器101010计数初值装入计数器201011写控制寄存器

00100读计数器000101读计数器100110读计数器28253的引脚信号二、与外部设备的接口信号CLK[0,1,2],时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。CLK可以是系统时钟脉冲,也可以由其他脉冲源提供GATE[0,1,2],门控输入端,用于外部控制计数器的启动计数和停止计数的操作。两个或两个以上计数器连用时,可用此信号来同步,也可用于与外部某信号的同步OUT[0,1,2,],计数输出端。在不同方式的计数过程中,OUT引脚上输出相应的信号

10-28253的控制字一、8253的方式控制字

8253的方式控制字有4个主要功能:

从3个计数器中选择一个

确定计数器数据的读写格式确定计数器的工作方式选择计数器的计数方式方式控制字的格式如图9-15所示,其中,X表示没有使用位,通常设置为0

8253的控制字格式无效8253的控制字计数器选择(D7D6)

决定这个控制字是哪一个通道的控制字。由于3个通道的工作是完全独立的,所以需要有3个控制字寄存器分别规定相应通道的工作方式。但它们的地址是同一个,即A1A0=11(控制字寄存器的地址)。所以,需要由这2位来决定是哪一个通道的控制字读/写格式(D5D4)

CPU向计数通道写入初值和读取它们的当前状态时,有几种不同的格式若低8位计数,则令D5D4=01,只写低8位,高8位自动置0;若高8位计数,则令D5D4=10,只写高8位,低8位自动为0;若16位计数,则令D5D4=11,先写入低8位,后写入高8位;令D5D4=00,则把当前计数器中的值锁存到输出寄存器中,以便读取8253的控制字工作方式(D3D2D1)8253的每个通道可以有6种不同的工作方式,由D3D2D1

三位决定,具体情况在后面详细介绍数制选择(D0)

8253的每个通道都有两种计数制:二进制和二—十进制(BCD码),由D0位决定。在二进制时,写入初值的范围为0000H~FFFFH,其中0000H是最大值,表示65536。在二—十进制时,写入初值范围为0000~9999,其中0000表示最大值l0000。因为计数器是先减1,再判断是否为0,所以写入0实际代表最大计数值8253的控制字例【1】选用计数器0计数,计数值为1000,用BCD方式计数,用方式3计数,假设系统安排8253计数器0、1、2和控制端口的地址分别为:220H、221H、222H和223H,试对计数器0编程初始化

MOVDX,223HMOVAL,00110110H;二进制方式计数

OUTDX,AL;送计数方式控制字

MOVDX,220HMOVAX,1000;十进制数1000送给AXOUTDX,AL;先送低8位

MOVAL,AHOUTDX,AL;后送高8位

8253的编程逻辑二、8253的编程逻辑

当初始化8253某个计数通道时,首先把相应的方式控制字写入到控制字寄存器中,再根据控制字中数据读/写格式(D5D4)位的规定,写入计数初值到对应的计数通道。8253工作过程中,任一通道的计数值,CPU可用输入指令读取。CPU读到的是执行输入指令瞬间计数器的当前值,但8253的计数器是16位的,所以要分2次读至CPU,因此,若不锁存的话,在前后两次执行输入指令的过程中,计数值可能已经发生变化了

8253的编程逻辑

锁存当前计数值有下面3种方法:

利用GATE信号使计数过程暂停向8253写入一个方式控制字,令8253通道的输出锁存器锁存。8253的每个通道都有一个16位输出锁存器,平时它的值随着通道计数器的值变化。当向通道写入锁存的控制字时,它把计数器的当前值锁存(计数器可继续计数),于是CPU读取的就是输出锁存器的值。当对计数器重新编程,或读取计数值后,自动解除锁存状态,它的值又随减法计数器变化写读回命令锁存

10.38253的六种工作方式

8253的每一个计数器都可以按照控制字的规定有6种不同的工作方式。下面结合时序波形图介绍各种工作方式的计数过程:五.8253-PIT的工作方式*CW写入,OUT=0;*写入时常LSB,通道开始计数;*计数到零,OUT=1;*计数器只计数一遍;*OUT是N+1个CLK后变高;*计数过程中,GATE=0,计数暂停;*计数过程中可改变计数值;*8253无中断控制,可用OUT信号作为中断请求。1.方式0方式1(可编程单稳)*写入控制字OUT=1,写入常数不计数;*GATE启动计数,OUT=0;*计数到,OUT=1。*单拍脉冲宽度为N;*由GATE重新启动;*计数中,可重新启动;*计数中,可改变计数值,再次启动有效。方式2(速率发生器)*写入控制字OUT=1;*写入常数立即对CLK计数;*计数到1,OUT=0;*一个CLK周期后,OUT=1,重新计数。*通道连续工作不需重置时常;*计数过程中,GATE=0,计数暂停,GATE变高后重新计数;*计数过程中可改变计数值;新的计数值在下一次有效。方式3(方波速率发生器)*与方式2的区别在于:输出为周期是N个CLK脉冲的方波。*若计数值为偶数,每个CLK使计数值减2,计到0,OUT改变状态,重装计数值开始新的计数。*若计数值为奇数,第一个脉冲先减1,以后,每个CLK使计数值减2,计到0时,OUT改变状态,重装计数值后,第一个脉冲减3,以后,每个CLK使计数值减2,计到0时,OUT改变状态。*GATE信号控制计数过程;*计数过程中写入新的计数值将在半周期结束时装入计数器。例:要求计数器0工作于方式3,输出方波的频率为2KHz,计数脉冲的频率为2.5MHz,采用BCD计数,试写出初始化程序段。2.常数计算:TC=2.5MHz/2KHz=1250MOVAL,37HOUT83H,ALMOVAL,50HOUT80H,ALMOVAL,12HOUT80H,AL1.8253的端口地址为:80H,81H,82H,83H。000111113.8253的方式控制字为:4.初始化程序段:方式4(软件触发选通)*写入控制字OUT=1;*写入常数立即对CLK计数;*计数到0,OUT=0;*一个CLK周期后,OUT=1,计数器停止计数。*计数器只计数一遍;*OUT是N+1个CLK后变低;*计数过程中,GATE=0,计数暂停;*若在计数过程中,改变计数值,则按新的计数值重新开始计数。方式5(硬件触发选通)*写入控制字OUT=1;*写入常数后,由GATE的上升沿启动计数;*计数到0,OUT=0;*一个CLK周期后,OUT=1,计数器停止计数。*计数器只计数一次;*OUT是N+1个CLK后变低;*在计数过程中出现的GATE脉冲,将使计数器重新开始计数,对输出状态没有影响;*若在计数过程中改变计数值,只要没有GATE信号触发,不影响计数过程。有新的GATE信号触发则按新的计数值开始计数。9.2.58253几种工作方式的比较一、计数值N与输入CLK和输出OUT的关系

8253在不同工作方式下,计数值N与输入CLK时钟脉冲和输出OUT的关系是不同的,如表9-4所示

表10-2计数值N与输入CLK和输出OUT的关系

方式功能N与CLK和OUT的关系

0计完最后一个数中断

写入N后,过N+1个CLK输出变高

1硬件再触发单拍脉冲

宽度为N-1个CLK的正脉冲

2速率发生器

每N个CLK,输出N-1个CLK高,1个CLK低

3方波速率发生器

N为偶数:输出为N/2个CLK高,N/2个CLK低的方波;N为奇数:输出为(N+1)/2个CLK高,(N-1)/2个CLK低的方波

4软件触发选通

写入N后过N+1个CLK,输出一个CLK宽度的负脉冲

5硬件触发选通

门控触发后过N+1个CLK,输出一个CLK宽度的负脉冲

8253几种工作方式的比较二、启动计数和重复计数的条件

所有工作方式都必须设置计数值才能够开始工作,但不是所有的方式一经设置计数值就马上开始计数,需要有一定的条件才能工作。有些方式一经启动,计数器就永无休止的工作下去,而有些方式只能计数一次。如果要重复计数同样需要某些条件,这些条件如表10-3所示

10-3启动计数和重复计数的条件

方式

功能启动条件

重复条件

0计完最后一个数中断

写计数值

写计数值

1硬件再触发单拍脉冲

外部触发

外部触发

2速率发生器

写计数值

自动

3方波速率发生器

写计数值

自动

4软件触发选通

写计数值

写计数值

5硬件触发选通

外部触发

外部触发

8253几种工作方式的比较三、门控信号的作用

8253在不同的工作方式下,门控信号GATE的作用如表10-3所示

10-3门控信号的作用

方式

功能GATE低或变为低

上升沿

0计完最后一个数中断

禁止计数

---允许计数

1硬件再触发单拍脉冲---(1)启动计数(2)下一CLK后使输出变低

---2速率发生器

(1)禁止计数(2)立即使输出为高

(1)重新装入计数值(2)启动计数允许计数

3方波速率发生器

(1)禁止计数(2)立即使输出为高

启动计数

允许计数

4软件触发选通禁止计数

---允许计数

5硬件触发选通

---启动计数

---8253几种工作方式的比较

四、在计数过程中改变计数值

8253的六种工作方式都可以在计数器计数过程中改变计数值。新的计数值什么时候起作用,随工作方式不同而有差异,具体区别如表10-4所示

10-4在计数过程中改变计数值方式

功能改变计数值

0计完最后一个数中断

立即有效

1硬件再触发单拍脉冲

外部触发后有效

2速率发生器

计数到1后有效

3方波速率发生器

(1)外部触发后有效(2)计数到0后有效

4软件触发选通立即有效

5硬件触发选通

外部触发后有效

8253几种工作方式的比较

五、8253应用举例例设一片8253接在系统中,如图9-23所示。计数器0、1、2及控制口地址分别为320H、321H、322H以及323H,用计数器0与计数器1级联定时,在OUT1输出对称方波,使LED点亮0.5S,熄灯0.5S,周而复始,试对计数器0和计数器1初始化编程

分析:由于CLK0输入f=1MHz,所以周期t0=1μs,而定时时间间隔为1S,那么计数初始值:1000ms÷1μs=1000000,分配为1000×1000,即计数器0与1分别送初始值1000,均选用二进制计数,并采用方式3计数,编程如下:8253应用举例

8253应用举例MOVDX,323H ;控制端口地址给DXMOVAL,00110110B ;计数器0控制字OUTDX,ALMOVAX,1000MOVDX,320HOUTDX,AL ;先送低8位MOVAL,AHOUTDX,AL ;后送高8位MOVDX,323HMOVAL,01110110B ;计数器1控制字

OUTDX,ALMOVDX,321HMOVAX,1000OUTDX,AL ;先送低8位MOVAL,AHOUTDX,AL ;后送高8位8253应用举例

计数器0输出周期为1ms的方波,计数器1输出周期为1000ms的方波,低电平使LED导通发亮。当每个计数器送完初始值后,要等到下一个完整的CLK时钟到来时,减法计数器才获得计数初始值,并开始作减1计数。只要8253不掉电,它将不停顿地对外部脉冲进行计数。

8253应用举例

例:假如一片8253的3个计数器全部级联起来,外部计数脉冲的频率为2MHz,采用二进制方式计数,最长的定时间隔是多少?

解:①输入f=2MHz,所以周期t=0.5μs②每个计数器的初值为0时,实际初值相当于65536,则第一级定时间隔为65536×0.5μs=32.768ms③3个计数器全部级联,定时间隔为

T=65536×65536×65536×0.5μsA4A3A0A5M/IOA7A6A9A8G1G2BG2ACBAY4A2A1RDWRD7—D0GATE0OUT0CLK0CLK1CLK2GATE1OUT1GATE2OUT2A1A0RDWRD7—D0CS1MHz方波5V2KHz方波1ms的负脉冲单脉冲8086CPU74LS138例:用8253产生各种定时波形。例2:用8253产生各种定时波形。要求:(1)通道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初始化程序MOVDX,316HMOVAL,00110111BOUTDX,ALMOVDX,310HMOVAL,00HOUTDX,ALMOVAL,05HOUTDX,AL;通道1初始化程序MOVDX,316HMOVA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论