微机原理与接口技术章定时器计数器_第1页
微机原理与接口技术章定时器计数器_第2页
微机原理与接口技术章定时器计数器_第3页
微机原理与接口技术章定时器计数器_第4页
微机原理与接口技术章定时器计数器_第5页
已阅读5页,还剩71页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

06二月2024第9章定时/计数接口电路9.1定时/计数的基本概念9.2可编程定时/计数器Intel8253/82549.3Intel8254简介习题906二月20249.1定时/计数的基本概念

定时(计数)就是通过硬件或软件的方法产生一个时间基准,以此来实现对系统的定时或延时控制。要实现定时或延时控制,有三种主要方法:软件定时、纯硬件定时及可编程的硬件定时器/计数器。1.软件定时软件定时的方法是:由于执行每条指令都需要时间,则执行一个程序段就需要一个固定的时间,通过适当地挑选指令和安排循环次数来实现软件的定时。这种方法由于要完全占用CPU的时间,因而降低了CPU的利用率。06二月2024DELAYPROCNEARPUSHBXPUSHCX;保护现场

MOVCX,0LOP1:MOVBX,0LOP2:DECBXJNZLOP2LOOPLOP1;共循环65536*65536次

POPCXPOPBX;恢复现场

RETDELAYENDP06二月20242.纯硬件定时它采用固定的电路,如可以采用小规模集成电路555,外接电阻和电容构成单稳延时电路。这样的定时电路简单,而且通过改变电阻和电容,可以使定时在一定的范围内调整。但它由纯硬件来完成,给使用带来不便。

振荡周期:

T=0.7*(R1+2R2)*C06二月2024

3.可编程硬件定时器/计数器这是目前在控制系统中广泛使用的方法,它通过编程来控制电路的定时值及定时范围,功能强,使用灵活。在计算机系统中,象定时中断、定时检测、定时扫描等等都是用可编程定时器来完成定时控制的。

Intel系列的8253、8254就是常用的可编程定时/计数器。06二月20249.2可编程定时/计数器Intel8253/8254-PIT9.2.1Intel8253的主要性能和内部结构

1.Intel8253的主要性能

Intel8253-PIT有3个独立的16位计数器,每个计数器都可以按照二进制或BCD码进行计数,计数速率可达2MHz(8254为10MHZ),每个计数器有6种工作方式,可编程设置和改变。它可用在多种场合,如方波发生器、分频器、实时时钟、事件计数等方面。06二月2024图9.1Intel8253的内部结构数据总线缓冲器读写控制逻辑

控制字寄存器计数器

0计数器1计数器2RDWRCSA0A1CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D7~D02.Intel8253的内部结构06二月2024⑴数据总线缓冲器它与CPU的数据总线相连,是8位双向三态缓冲器。CPU通过这个缓冲器对8253进行读/写操作。⑵控制字寄存器此寄存器只能写入而不能读出。在8253初始化时,由CPU写入控制字来设置计数器的工作方式。⑶计数器计数器0、计数器1、计数器2是三个完全独立、结构相同的计数器,每一个都是由一个16位的可预置的减法计数器构成。06二月20249.2.2Intel8253的外部性能图9.2Intel8253的外部引脚图D7D6D5D4D3D2D1D0CLK0OUT0GATE0GNDOTU1GATE1CLK1GATE2CLK2A0A1OTU2WRRDCSVCC8253PIT24232221201918171615141312345678910111206二月2024GATE:门控信号,当GATE为低电平时,禁止计数器工作;GATE为高电平时,才允许计数器工作。

CLK:计数脉冲输入。

OUT:脉冲输出。当计数到“0”时,从OUT端输出信号,输出信号的波形取决于工作方式。

CS、RD、WR、A0、A1共同结合,用于对8253进行端口操作,如表9-1所示。06二月2024表9-18253的端口选择A1A0寄存器选择和操作01000写计数器001001写计数器101010写计数器201011写控制字寄存器00100读计数器000101读计数器100110读计数器200111无操作(三态)1××××禁止(三态)011××无操作(三态)06二月20249.2.3Intel8253的控制字和编程图9.38253的控制字

在8253的初始化编程中,CPU通过向8253的控制字寄存器写入控制字来设置其工作方式。格式如下:06二月2024

SC1、SC0:

这两位决定这个控制字是哪一个计数器的控制字。

RL1、RL0:设置数据读/写格式。在读取计数值时,可令RL1、RL0=00,先将写控制字时的计数值锁存,然后再读取。

M2、M1、M0:设置每个计数器的工作方式。

BCD:用于选择每个计数器的计数制。在二进制计数时,计数初值的范围是0000H~FFFFH,其中0000H是最大值,代表65536。在BCD码计数时,计数初值的范围中0000—9999,其中,0000是最大值,代表10000。06二月20249.2.4Intel8253的工作方式

Intel8253的每个计数器都有6种工作方式,这6种方式的主要区别是:输出的波形不同,计数过程中GATE信号对计数操作的影响不同,启动计数器的触发方式不同等。

1.方式0—计数结束后输出由低变高(计数/定时结束中断)

该方式的波形如图9.4所示。06二月202412456378910新值立即有效停止计数继续计数方式0的波形06二月2024GATE为低时,停止计数,有效后继续计数GATE信号的作用:06二月2024

在计数过程中可改变计数初值,若为8位计数初值,写入新值后,计数器将按新值开始计数,若为16位计数初值,则在写入低8位后停止计数,写入高8位后,计数器按新值开始计数。06二月2024

这种方式的特点是:

①写入控制字后,OUT输出端变为低电平。当写入计数初值后,计数器开始减1计数。在计数过程中OUT一直保持为低电平,直到计数到0时,OUT输出变为高电平。此信号可用于向CPU发出中断请求。②计数器只计数一遍。当计数到0时,不恢复计数初值,不开始重新计数,且输出一直保持为高电平。只有在写入新的计数值时,OUT才变低,并开始新的计数。06二月2024③GATE是门控信号,GATE=1时允许计数,GATE=0时,禁止计数。在计数过程中,如果GATE=0则计数暂停,当GATE=1后接着计数。④在计数过程中可改变计数值。若是8位计数,在写入新的计数值后,计数器将按新的计数值重新开始计数。如果是16位计数,在写入第一个字节后,计数器停止计数,在写入第二个字节后,计数器按照新的计数值开始计数。方式0的应用举例(家庭厨房应用—电饭煲微波炉控制)06二月20248253工作在方式0,二进制计数。4小时后OUT0输出高电平申请中断,接通家用电器。设8253口地址为40~43H,8255口地址为60~63H。程序片段如下:MOVAL,10011010BOUT63H,ALMOVAL,00HOUT63H,ALMOVAL,00110000BOUT43H,ALMOVAL,40HOUT40H,AL计数初值:4*3600=14400s=3840HMOVAL,38HOUT40H,AL中断程序片段

MOVAL,00000001BOUT63H,AL2.方式1—可编程序的单拍脉冲

方式1的波形如图9.6所示。06二月2024图9.6方式1波形12456378109重新开始计数06二月202406二月202406二月2024

方式1的特点是:①写入控制字后,输出OUT将保持为高电平,计数由GATE启动。GATE启动之后,OUT变为低电平,当计数到0时,OUT输出高电平,从而在OUT端输出一个负脉冲,负脉冲的宽度为N个(计数初值)CLK的脉冲宽度。②当计数到0后,不用送计数值,可再次由GATE脉冲启动,输出同样宽度的单拍脉冲。③在计数过程中,可改变计数初值,此时计数过程不受影响。如果再次触发启动,则计数器将按新输入的计数值计数。④在计数未到0时,如果GATE再次启动,则计数初值将重新装入计数器,并重新开始计数。06二月2024方式1应用06二月2024T2T1T3T1方式1T1+T3>NTCLK>T1+T2只要选取的时间常数N满足:就可以滤去由同一车的不同车厢对光路的干扰06二月20243.方式2——频率发生器(分频器)

方式2的波形如图9.7所示。9.73分频06二月2024

方式2的特点是:①写入控制字后,输出将变为高电平。写入计数值后,计数立即开始。在计数过程中输出始终为高电平,直至计数器减到1时,输出将变为低电平。经过一个CLK周期,输出恢复为高,且计数器开始重新计数。它能够连续工作,输出固定频率的脉冲。06二月2024②如果计数值为N,则每输入N个CLK脉冲,输出一个脉冲。因此相当于对输入脉冲的N分频。通过对N赋不同的初值,即可在输出端得到所需的频率,起到频率发生器的作用。③计数过程可由门控脉冲控制。当GATE=0时,暂停计数;当GATE变高自动恢复计数初值,重新开始计数。④在计数过程中可以改变计数值,这对正在进行的计数过程没有影响。但在计数到1时输出变低,经过一个CLK周期后输出又变高,计数器将按新的计数值计数。06二月2024

4.方式3—方波发生器方式3的波形如图9.8所示。它的特点是:①输出为周期性的方波。若计数值为N,则输出方波的周期是N个CLK脉冲的宽度。图9.8方式3波形06二月2024

②写入控制字后,输出将变为高电平。当写入计数初值后,就开始计数,输出仍为高电平;当计数到初值一半时,输出变为低电平,直至计数到0,输出又变为高电平,重新开始计数。③若计数值为偶数,则输出对称方波。如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N—1)/2个CLK脉冲期间输出为低电平。④GATE信号能使计数过程重新开始。GATE=1允许计数,GATE=0禁止计数。停止后OUT将立即变高电平,当GATE再次变高以后,计数器将重新装入计数初值,重新开始计数。06二月20245.方式4——软件触发选通

方式4就是CPU通过软件触发8253的某个通道,定时启动一个事件或工作过程。波形如图9.9所示。06二月2024n=4n=406二月2024

这种方式的特点是:①写入控制字后,输出为高电平。写入计数值后立即开始计数(相当于软件触发启动),当计数到0后,输出一个时钟周期的负脉冲,计数器停止计数。只有在输入新的计数值后,才能开始新的计数。计数值一次有效。②当GATE=1时,允许计数,GATE=0,停止计数。计数过程中GATE变低后重新变高,则计数器从初值开始重新计数。③在计数过程中,如果改变计数值,则按新计数值重新开始计数。如果计数值是16位,则在设置第一字节时停止计数,在设置第二字节后,按新计数值中开始计数。06二月2024方式4应用

这个例子实际上相当于CPU对家用电器的启动命令被延迟设定时间后发出的。

不完善处:要严格地按时开机和运行程序的要求可能会使用户对此系统不满意,还可以继续改进。6.方式5——硬件触发选通

方式5的波形如图9.10所示。06二月202406二月2024GATA的作用06二月2024

方式5的特点是:①写入控制字后,输出为高电平。在设置了计数值后,计数器并不立即开始计数,而是由门控脉冲的上升沿触发启动。当计数到0时,输出一个CLK周期的负脉冲,并停止计数。当门控脉冲再次触发时才能再计数。②在计数过程中如果再次用门控脉冲触发,则使计数器重新开始计数,此时输出还保持为高电平,直到计数为0,才输出负脉冲。③如果在计数过程中改变计数值,只要没有门控信号的触发,不影响计数过程。当有新的门控脉冲的触发时,不管是否计数到0,都按新的计数值计数。06二月2024方式5应用

这个例子相当于硬件开关对家用电器的启动命令被延迟设定时间后发出。06二月2024小结:06二月20249.2.5Intel8253的应用举例

1.初始化8253

要使用8253,必须首先对其进行初始化,初始化有两种方法:①对每个计数器分别进行初始化,先写控制字,后写计数值。如果计数值是16位的,则先写低8位再写高8位。②先写所有计数器的方式字,再写各个计数器的计数值。如果计数值是16位的,则先写低8位再写高8位。06二月2024MOVAL,36H ;设置控制字00110110(计数器0,方式3,写两个;字节,二进制计数)OUT43H,AL ;写入控制寄存器MOVAX,3060H ;设置计数值OUT40H,AL ;写低8位至计数器0MOVAL,AHOUT40H,AL ;写高8位至计数器0例如:假设一个8253在某系统中的端口地址40H~43H,如果要将计数器0设置为工作方式3,计数初值为3060H,采用二进制计数法,则初始化方法如下:06二月20242.8253在IBMPC/XT机的应用在IBMPC/XT机中,8253主要提供系统时钟中断、动态RAM的刷新定时及喇叭发声控制等功能。8253的初始化是在计算机启动时由BIOS完成的。图9.11是8253在IBMPC/XT机的应用的示意图:图9.118253在IBM-PC/XT机的应用的示意图CLK0CLK1CLK2GATE0GATE1GATE2OUT0OUT1OUT2INTIROQQ&滤波&PB0PB18255+5V1.193182MHz82538259+5V8088CPUDMA

控制器CP06二月2024⑴计数器0用于定时中断(约55ms)MOV AL,36H;计数器0,方式3,写两个字节,二进制计数OUT 43H,AL;控制字送控制字寄存器MOV AL,0;计数值为最大值OUT 40H,AL;写低8位OUT 40H,AL;写高8位1.193182MHZ/65536=18.2HZ1/18.2HZ=55mS

从8284时钟发生器来的频率2.386364MHZ经二分频后作为8253三个计数器的时钟输入,8253在IBM-PC/XT中的端口地址为40H~43H,这三个计数器在系统中的初始化程序如下:06二月2024⑵计数器1用于定时(15μs)DMA请求

MOV AL,54H;54H=01010110BOUT 43,AL;计数器1,方式2,只写低8位,二进制计数

MOV AL,12H;初值为18;15μS/1.19318MHz=18OUT 41H,AL;18/1.19MHZ=15

注:动态存储器要求2ms刷新一遍,如果每次刷新512个单元,则经128次刷新即可将全部芯片的64KB刷新完毕。2ms/128=15.6μS

06二月2024⑶计数器3用于产生约900HZ的方波送至扬声器MOV AL,B6H;计数器3,方式3,写两字节,二进制计数OUT 43,AL;B6=10110110BMOV AX,0533H

;计数初值为533H=1331;OUT 42H,AL;写低8位MOV AL,AHOUT 42H,AL;写高8位

实际上,1.193182*106/900=1326,这里给的计数初值为1331,所以实际产生的方波频率比900HZ要小

下面程序利用CNT2控制扬声器发出500HZ的声音,直至键盘上有任意键按下为止。

DATASEGMENTTABLEDW2380;1.19MHZ/500HZ=2380DATAENDSSTACKSEGMENTDB100DUP(?)

STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSOUNDPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AX06二月2024;8253初始化

MOVAL,10110110B;定时器2,16位计数,先高后低,方式3;二进制

OUT43H,ALMOVAX,TABLEOUT42H,ALMOVAL,AHOUT42H,ALINAL,61H;读8255PB口

PUSHAXORAL,3;允许发声

OUT61H,ALMOVAH,1INT21HPOPAXOUT61H,ALRETSOUNDENDPCODEENDSENDSTART

06二月2024CLK0CLK1CLK2GATE0GATE1GATE2OUT0OUT1OUT2INTIROQQ&滤波&PB0PB18255+5V1.193182MHz82538259+5V8088CPUDMA

控制器CP

例题:利用PC机总线在外部扩展一片8253,利用其通道0记录外部事件的发生次数,每输入一个高脉冲表示事件发生一次。当事件发生100次后就向CPU提出中断请求(边沿触发),假设此片8253片选信号的I/O地址范围为200H~207H。06二月2024

;8253初始化

MOVDX,203HMOVAL,10HOUTDX,AL;方式0,二进制计数,只写低字节计数值

MOVDX,200HMOVAL,64HOUTDX,AL;置计数初值06二月2024

关于级联问题:现在8253芯片有1MHZ的方波输入信号,要求分频为10HZ的信号,或者要求8253能定时10分钟,只能用单片8253来完成,应该怎么办?06二月20241、1MHZ的方波输入信号,要求分频为10HZ的信号单通道无法完成分频任务用两通道级联的反复完成分频任务82531MHZ10HZCLK0OUT0OUT1CLK1+5VGATA0GATA1计数器0初值设为1000计数器1初值设为100均工作在方式3下。06二月2024现在8253芯片有1MHZ的方波输入信号,要求能定时10分钟分析:10分钟=10*60=600S1个CLK周期为1/1MHZ=10-6S

所以10分钟共需:600/10-6=6*108,显然需要通道级联。82531MHZ10分钟CLK0OUT0OUT1CLK1+5VGATA0GATA1计数器0初值设为10000,工作在方式3;计数器1初值设为60000,工作在方式0下。10分钟后OUT1端输出高电平。假设8253的端口地址为310~313H,程序如下:06二月2024MOVDX,313H;计数器0初始化

MOVAL,00110110BOUTDX,AL;方式3,二进制计数,先低后高写入计数初值

MOVDX,310HMOVAX,10000OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,313H;计数器1初始化

MOVAL,01110000BOUTDX,AL;方式0,二进制计数,先低后高写入计数初值

MOVDX,311HMOVAX,60000OUTDX,ALMOVAL,AHOUTDX,AL06二月2024

例题:已知8254定时计数器的端口地址为310H~313H,现要求输出以下波形:计数器0每10ms输出一个CLK脉冲宽度的负脉冲;用计数器2输出1Hz的连续方波信号。已知输入8254的时钟频率为2MHz。画出电路连接图,并编写初始化程序。

分析:按照输出波形的要求,计数器0应设置为工作方式2,计数器2设置为工作方式3。已知8254的时钟频率为2MHz,其周期TCLK=1/2*106=0.5μs,则:

计数器0的计数初值:CNT0=10ms/0.5μs=20000

计数器2的计数初值:CNT2=2×106/1=2000000>65536

在这种情况下,可将两个计数通道串联起来分别进行分频,即计数器1的分频值设为2000、计数器2的分频值为1000,电路连接图如下图所示。06二月202406二月2024MOVDX,313H;计数器0初始化

MOVAL,00110100BOUTDX,AL;方式2,二进制计数,先低后高写入计数初值

MOVDX,310HMOVAX,20000;计数初值

OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,313H;计数器1初始化

MOVAL,01110110BOUTDX,AL;方式3,二进制计数,先低后高写入计数初值

MOVDX,311HMOVAX,2000;计数初值

OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,313H;计数器2初始化

MOVAL,10110110BOUTDX,AL;方式3,二进制计数,先低后高写入计数初值

MOVDX,312HMOVAX,1000;计数初值

OUTDX,ALMOVAL,AHOUTDX,AL06二月202406二月202406二月2024(例7-6)计件系统。计件系统的功能就是记录脉冲的个数。一个脉冲代表一个事件,如交通道路检测系统中通过检测点的车辆,工业控制系统中流水线上加工好的工件。要求在计件过程中,计算机可以显示当前计数器的内容,当完成10000个工件记录后,系统发1KHz信号推动喇叭发音,通知用户。这是一个典型的8253作为计数器应用的例子。这里显然需要两个通道,一个作为计数,选用通道0;另一个产生lkHz信号,选用通道1。通道1的工作方式很容易确定,由于要产生lkHz信号,故选用工作方式3。至于通道0的工作方式,稍微要复杂些。如果要求计数初值写入计数通道后,计数器就可以工作,则通道0的启动方式应是软件启动。由于要求计数溢出后产生一个信号来启动一个事件,即喇叭发音,故可选的工作方式为方式0和方式4;为了简化电路,采用如图7.40所示方案。06二月2024

通道1的GATE信号由通道0的OUT信号产生,这个OUT信号应该是电平型的,所以通道0应选用方式0。

通道1的计数初值为:1MHz/1KHz=1000

通道0的计数初值为:10000设8253地址为300H~303H,程序如下:06二月2024MOVDX,303HMOVAL,01110110B;1#,方式3二进制计数OUTDX,ALMOVDX,301HMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,AL;1#初始化完毕

MOVDX,303HMOVAL,00110000B;0#,方式0二进制计数

MOVDX,300HMOVAX,10000OUTDX,ALMOVAL,AHOUTDX,AL;0#初始化完毕GETDAT:CALLDELAY;延时

MOVDX,303HMOVAL,00000000B;锁存计数器0OUTDX,ALMOVDX,300HINAL,DXMOVCL,ALINAL,DXMOVCH,ALCALLDISPLAY;计数值显示

CMPCX,0JNZGETDAT…….;完成计数进行其它处理06二月202406二月20249.3Intel8254-PIT简介

Intel8254是Intel8253的改进型,它们在操作方式及引脚排列上完全相同。相比8253,8254主要改进的内容是:

1.计数频率高

8254的计数频率可由直流至6MHz,8254-2可高达10MHz。而8253最高只能达到2.6MHz。06二月2024

2.有读回命令(写入至控制字寄存器)

如果控制字寄存器D7=1,D6=1,D0=0,即为8254的读回命令,其格式如图9.12所示。这个命令可以使三个计数器的计数值一次锁存,而在8253则需要写入三个命令。06二月2024图9.128254的读回命令06二月2024

另外,在8254中每个计数器都有一个状态字,当要读取时,也可由读回命令进行锁存。其状态状态字的格式如图9.13所示。图9138254的状态字格式06二月2024

其中,D0~D5与方式控制字对应位的意义相同。即为写入此计数器的控制字的相应部分。D7表示OUT引脚的输出状态。D6表示计数初值是否已装入减1计数器,D6=0表示已经装入,可以读取计数器。06二月2024

脉冲量输入通道中的主要功能部件是硬件计数器。图2-44a、b分别给出了利用Intel8254所构成的脉冲计数电路和脉冲间隔测量电路。前者能统计给定采样时间Ts内的输入脉冲个数;后者能把相邻的两个脉冲的间隔时间T测量出来。

在脉冲计数应用

温馨提示

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

评论

0/150

提交评论