当前位置:文档之家› 定时器 计数器的基本结构及工作原理

定时器 计数器的基本结构及工作原理

定时器 计数器的基本结构及工作原理
定时器 计数器的基本结构及工作原理

定时器计数器的基本结构及工作原理

80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思

是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和

改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能

寄存器(控制寄存器和方式寄存器)。

定时器/计数器的结构:

从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别

由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存

放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑

电路连接起来的。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定

时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。

定时计数器的原理:

16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。

当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分

频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,

定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:

T=1/(12×106)Hz×1/12=1μs

这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并

要适当选择定时器的长度(如8位、13位、16位等)。

当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至

0的跳变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。

例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号

的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部

计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。

当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工

作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中

断CPU当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。

综上所述,我们已知定时器/计数器是一种可编程部件,所以在定时器/计

数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控

制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将

工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋

定时/计数初值。下面我们就提出的控制字的格式及各位的主要功能与大家详细的讲解。

控制寄存器定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。

定时器/计数器方式寄存器TMOD:

定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位

地址。TMOD的格式如下图所示。

由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:

GATE:门控制位。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。

C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。

M1M0:工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。

工作方式功能描述

0 0

0 1

1 0

1 1工作方式0

工作方式1

工作方式2

工作方式313位计数器

16位计数器

自动再装入8位计数器

定时器0:分成两个8位计数器

定时器1:停止计数

定时器/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。复位时,TMOD所有位均为0。

例:设定定时器1为定时工作方式,要求软件启动定时器1按方式2工作。定时器0为计数方式,要求由软件启动定时器0,按方式1工作。

我们怎么来实现这个要求呢?

大家先看上面TMOD寄存器各位的分布图

第一个问题:控制定时器1工作在定时方式或计数方式是哪个位?通过前面的学习,我们已知道,C/T位(D6)是定时或计数功能选择位,当C/T=0时定时/

计数器就为定时工作方式。所以要使定时/计数器1工作在定时器方式就必需使

D6为0。

第二个问题:设定定时器1按方式2工作。上表中可以看出,要使定时/计数器1工作在方式2,M0(D4)M1(D5)的值必须是1 0。

第三个问题:设定定时器0为计数方式。与第一个问题一样,定时/计数器

0的工作方式选择位也是C/T(D2),当C/T=1时,就工作在计数器方式。

第四个问题:由软件启动定时器0,前面已讲过,当门控位GATE=0时,定

时/计数器的启停就由软件控制。

第五个问题:设定定时/计数器工作在方式1,使定时/计数器0工作在方

式1,M0(D0)M1(D1)的值必须是0 1。

从上面的分析我们可以知道,只要将TMOD的各位,按规定的要求设置好后,定时器/计灵敏器就会按我们预定的要求工作。我们分析的这个例子最后各位的情况如下:

D7 D6 D5 D4 D3 D2 D1 D0 00 10 01 01

二进制数00100101=十六进制数25H。所以执行MOV TMOD,#25H这条指令就可以实现上述要求。

定时器/计数器控制寄存器TCON:

TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为

88H一8FH,由于有位地址,十分便于进行位操作。

TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。

TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。

各位定义如下:

TF1:定时器1溢出标志位。当字时器1计满溢出时,由硬件使TF1置"1",并且申请中断。进入中断服务程序后,由硬件自动清"0",在查询方式下用软件清"0"。

TR1:定时器1运行控制位。由软件清"0"关闭定时器1。当GATE=1,且

INT1为高电平时,TR1置"1"启动定时器1;当GATE=0,TR1置"1"启动定时器1。

TF0:定时器0溢出标志。其功能及操作情况同TF1。

TR0:定时器0运行控制位。其功能及操作情况同TR1。

IE1:外部中断1请求标志。

IT1:外部中断1触发方式选择位。

IE0:外部中断0请求标志。

IT0:外部中断0触发方式选择位。TCON中低4位与中断有关,我们将在

下节课讲中断时再给予讲解。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行"CLR TF0"后则清定时器0的溢出;执行"SETB TR1"后可启动定时器1开始工作(当然前面还要设置方式定)。

定时器/计数器的初始化:

由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计

数器前都要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下:

1、确定工作方式(即对TMOD赋值);

2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);

3、根据需要开放定时器/计数器的中断(直接对IE位赋值);

4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置"1";若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。下面介绍一下确定时时/计数器初值的具体方法。

因为在不同工作方式下计数器位数不同,因而最大计数值也不同。

现假设最大计数值为M,那么各方式下的最大值M值如下:

方式0:M=213=8 192

方式1:M=216=65 536

方式2:M=28=256

方式3:定时器0分成两个8位计数器,所以两个M均为256。因为定时器/计数器是作"加1"计数,并在计数满溢出时产生中断,因此初值X可以这样计算:

X=M-计数值

下面举例说明初值的确定方法。

例1、选择T1方式0用于定时,在P1.1输出周期为1ms方波,晶振

fosc=6MHz。

解:根据题意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可。则M1 M0=0;因是定时器方式,所以C/T=0;在此用软件启动T1,所以GATE=0。T0不用,方式字

可任意设置,只要不使其进入方式3即可,一般取0,故TMOD=00H。系统复位后TMOD为0,可不对TMOD重新清0。

下面计算500us定时T1初始值:

机器周期T=12/fosc=12/(6×106)Hz=2μs

设初值为X,则:

(1013-X)×2×10-6s=500×10-6s X=7942D=1111100000110 B=1F06H

因为在作13位计数器用时,TL1的高3位未用,应填写0,TH1占用高8位,所以X的实际填写应为:

X=111100000000110 B=F806H

结果:TH1=F8H,TL1=06H

源程序如下:

ORG 2000H MOV TL1,#06H;给TL1置初值

MOV TH1,#0F8H;给TH1置初值

SETB TR1;启动T1 LP1:JBC TF1,LP2;查询计数溢出否?

AJMP LP1 LP2:MOV TL1,#06H;重新设置计数初值

MOV TH1,#0F8H CPL P1.1;输出取反

AJMP LP1;重复循环定时器/计数器的四种工作方式:

定T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。

工作方式0:13位方式由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。工作方式0的结构见下图:

为定时/计数选择:C/T=0,T1为定时器,定时信号为振荡周期12分频后的脉冲;C/T=l,T1为计数器,计数信号来自引脚T1的外部信号。

定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。GATE,TR1,C/T 的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。

在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:TRl=1,打开T1;TRl=0,关闭T1。在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TRl=1。当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;一旦外部脉冲出现下降沿,亦即INT1由l变O时就关闭了T1。

定时器启动后,定时或计数脉冲加到TLl的低5位,从预先设置的初值(时间常数)开始不断增1。TL1计满后,向THl进位。当TL1和THl都计满之后,置位T1的定时器回零标志TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。

方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。当TL0的低5

位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。

在方式0下,当为计数工作方式时,计数值的范围是:1~8192(213)

当为定时工作方式时,定时时间的计算公式为:

(213-计数初值)×晶振周期×12或(213-计数初值)×机器周期

其时间单位与晶振周期或机器周期相同(ms)。

例题1:当某单片机系统的外接晶振频率为6MHz,该系统的最小定时时间为:

[213-(213-1)]×[1/(6×106)]×12=2×10-6=2(ms)

最大定时时间为:

(213-0)×[1/(6×106)]×12=16384×10-6=16384(ms)

或:最小定时单位×1013=16384(ms)

例题2:设某单片机系统的外接晶振频率为6MHz,使用定时器1以方式0

产生周期为500ms的等宽正方波连续脉冲,并由P1.0输出。

以查询方式完成。

⑴计算计数初值

欲产生500ms的等宽正方波脉冲,只需在P1.0端以250ms为周期交替输出高低电平即可实现,为此定时时间应为250ms。使用6MHz晶振,根据上例的计算,可知一个机器周期为2ms。方式0为13位计数结构。设待求的计数初值为X,则:

(213-X)×2×10-6=250×10-6

求解得:

X=213-(250÷2)=8067。

二进制数表示为1111110000011。十六进制表示,高8位为FCH,放入TH1,即TH1=FCH;低5位为03H。放入TL1,即TL1=03H。

⑵TMOD寄存器初始化

为把定时器/计数器1设定为方式0,则M1M0=00;为实现定时功能,应使

C/T=0;为实现定时器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存器应初始化为00H。

⑶由定时器控制寄存器TCON中的TR1位控制定时的启动和停止TR1=1启动,TR1=0停止。

⑷程序设计:

MOV TMOD,#00H;设置T1为工作方式0 MOV TH1,#OFCH;设置计数初值

MOV TL1,#03H MOV IE,#00H;禁止中断

LOOP:

SETB TR1;启动定时

JBC TF1,LOOP1;查询计数溢出

AJMP LOOP LOOP1:

MOV TH1,#FCH;重新设置计数初值

MOV TL1,#03H CLR TF1;计数溢出标志位清0 CPL P1.0;输出取反

AJMP LOOP;重复循环工作方式1:

方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8

位构成。与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1

组成16位计数器,从而比工作方式0有更宽的定时/计数范围。

当为计数工作方式时,计数值的范围是:

1~65536(216)

当为定时工作方式时,定时时间计算公式为:

(216-计数初值)×晶振周期×12或(216-计数初值)×机器周期

例题1:当某单片机系统的外部晶振频率为6MHz,则最小定时时间为:

[216-(216-1)]×1/6×10-6×12=2×10-6=2(ms)

最大定时时间为:

(216-0)×1/6×10-6×12=131072×10-6(s)=131072(ms)≈131(ms)

例题2:某单片机系统外接晶振频率为6MHz,使用定时器1以工作方式1产生周期为500ms的等宽连续正方波脉冲,并在P1.0端输出。,但以中断方式完成。

⑴计算计数初值

TH1=FFH TL1=83H

⑵TMOD寄存器初始化

TMOD=10H

⑶程序设计

主程序:

MOV TMOD,#10H;定时器1工作方式1 MOV TH1,#0FFH;设置计数初值

MOV TL1,#0A1H SETB EA;开中断

SETB ET1;定时器1允许中断

LOOP:

SETB TR1;定时开始

HERE:

SJMP$;等待中断中断服务程序:

MOV TH1,#0FFH;重新设置计数初值

MOV TL1,#0A1H CPL P1.0;输出取反

RETI;中断返回

工作方式2 8位自动装入时间常数方式。由TLl构成8位计数器,THl仅用来存放时间常数。启动T1前,TLl和THl装入相同的时间常数,当TL1计满后,除定时器回零标志TFl置位,具有向CPU请求中断的条件外,THl中的时间常数还会自动地装入TLl,并重新开始定时或计数。所以,工作方式2是一种自动装入时间常数的8位计数器方式。由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。当然,这种方式的定时/计数范围要小于方式0和方式1。工作方式2的结构见下图.

当计数溢出后,不是像前两种工作方式那样通过软件方法,而是由预置寄存器TH以硬件方法自动给计数器TL重新加载。变软件加载为硬件加载。

初始化时,8位计数初值同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,同时把保存在预置寄存器TH0中的计数初值自动加载TL0,然后TL0重新计数。如此重复不止。这不但省去了用户程序中的重装指令,而且也有利于提高定时精度。但这种工作方式下是8位计数结构,计数值有限,最大只能到255。

这种自动重新加载工作方式非常适用于循环定时或循环计数应用,例如用于产生固定脉宽的脉冲,此外还可以作串行数据通信的波特率发送器使用。

例题1:使用定时器0以工作方式2产生100ms定时,在P1.0输出周期为200ms的连续正方波脉冲。已知晶振频率fosc=6MHz。

⑴计算计数初值

6MHz晶振下,一个机器周期为2ms,以TH0作重装载的预置寄存器,TL0作8位计数器,假设计数初值为X,则:

(28-X)×2×10-6=100×10-6

求解得:

X=206D=11001110 B=0CEH

把0CEH分别装入TH0和TL0中:

TH0=0CEH,TL0=0CEH

⑵TMOD寄存器初始化

定时器/计数器0为工式方式2,M1M0=10;为实现定时功能C/T=0;为实现定时器/计数器0的运行GATE=0;定时器/计数器1不用,有关位设定为0。

综上情况TMOD寄存器的状态应为02H。

⑶程序设计(查询方式)

MOV IE,#00H;禁止中断

MOV TMOD,#02H;设置定时器0为方式2 MOV TH0,#0CEH;保存计数初值

MOV TL0,#0CEH;设置计数初值

SETB TR0;启动定时

LOOP:

JBC TF0,LOOP1;查询计数溢出

AJMP LOOP LOOP1:

CPL P1.0;输出方波

AJMP LOOP;重复循环由于方式2具有自动重装载功能,因此计数初值只需设置一次,以后不再需要软件重置。

⑷程序设计(中断方式)

主程序:

MOV TMOD,#02H;定时器0工作方式2 MOV TH0,#0CEH;保存计数初值

MOV TL0,#0CEH;设置计数初值

SETB EA;开中断

SETB ET0;定时器0允许中断

LOOP:

SETB TR0;开始定时

HERE:

SJMP$;等待中断

CLP TF0;计数溢出标志位清0 AJMP LOOP中断服务中断:

CPL P1.0;输出方波

RETI;中断返回例题2:用定时器1以工作方式2实现计数,每计100次进行累加器加1操作。

⑴计算计数初值

28-100=156D=09CH则

TH1=09CH,TL1=09CH

⑵TMOD寄存器初始化

M1M0=10,C/T=1,GATE=0因此

TMOD=60H

⑶程序设计

MOV IE,#00H;禁止中断

MOV TMOD,#60H;设置计数器1为方式2 MOV TH1,#9CH;保存计数初值

MOV TL1,#9CH;设置计数初值

SETB TR1;启动计数

DEL:

JBC TF1,LOOP;查询计数溢出

AJMP DEL LOOP:

INC A;累加器加1 AJMP DEL;循环返回工作方式3 2个8位方式。工作

方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。

当T0为工作方式3时,THo和TL0分成2个独立的8位计数器。其中,

TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器

回零标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,见下图。

通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要

求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器(见 1.4),TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1

个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合

而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方

式3。

下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/

计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。

这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。

理解内容

定时器/计数器的应用

例1、设fosc=6MHz,利用单片机内定时/计数器及P10口线输出1000个脉冲,脉冲周期为2ms,试编程。

解:

T=12×1/fosc=2us

选取T0定时;T1计数。

设T0采用中断方式产生周期为2ms方波,T1对该方波计数,当输出至第1000个脉冲时,使TF1置1。

在主程序中用查询方法,检测到TF1变1时,关掉T0,停止输出方波。

T0、T1参数的确定:

T0模式0、定时:脉宽为脉冲周期的一半

所以,X=213-1ms/2us=0001 1110 0000 1100B TH0=0F0H TL0=0CH T1模式1、计数:N=1000

则X=65536-1000=64536=0FC18H

(若选模式0也可以,此时X=7192=1C18H)

程序:

MAIN:

WAIT:

TOS:ORG 0000H LJMP MAIN ORG 000BH LJMP TOS ORG 1000H MOV TMOD,#50H;T0定时,模式0;T1计数,模式1 MOV TL0,#0CH MOV TH0,#0F0H MOV

TL1,#18H MOV TH1,#0FCH SETB TR1 SETB TR0 SETB ET0 SETB EA JNB TF1,WAIT;查询1000个脉冲计够没有?没有等待。

CLR EA CLR ET0 ANL TCON,#0FH;停T0、T1 SJMP$

MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI END

例2、脉冲参数测量--GATE功能的使用。

电路连接如下图所示。

脉冲高电平(计数)长度值存于21H、20H中,

脉冲低电平长度存于23H、22H中。

解:复习GATE的用法:

GATE=0时,TRi=1,即可启动Ti定时/计数

GATE=1时,TRi=1,且/INTi=1,才启动定时/计数。

MAIN:

TEST0:

TEST1:

TEST2:

TEST3:ORG 0000H LJMP MAIN ORG 2000H MOV TMOD,#99H MOV A,#00H MOV TL0,A MOV TH0,A MOV TL1,A MOV TH1,A JB P32,TEST0 SETB TR0 JNB P32,TEST1 SETB TR1 JB P32,TEST2 CLR TR0 MOV 20H,TH0 MOV 21H,TL0 JB P33,TEST3 CLR TR1 MOV 22H,TH1 MOV 23H,TL1 LCALL DISP SJMP$

;T0、T1均工作在定时,

;模式1,GATE=1

;T0、T1赋计数初值00H,定时最长时间

;为0000~65536

;检测是否到a点

;到a点,TR0=1,做好取计时值准备。

;检测是否到1点

;到1点T0计时;TR1=1,做好T1计时准备。

;检测是否到2点

;到2点,停止T0计时,T1开始计时。

;保存T0计时结果

;检测是否到3点

;到3点,停止T1计数

;保存T1计数结果

特别声明:

1:资料来源于互联网,版权归属原作者

2:资料内容属于网络意见,与本账号立场无关

3:如有侵权,请告知,立即删除。

定时器、计数器操作与应用实验报告

实验三 定时器、计数器操作与应用实验报告 、实验目的 1、 了解和熟悉FX 系列可编程序控制器的结构和外 部接线方法; 2、 了解 和熟 悉 GX Developer Version 7.0 软件的 使用 方法 ; 3、 掌握 可编 程序 控制器 梯形 图程 序的 编制 与调 试。 二、实验要求 仔 细阅 读实 验指 导书 中关 于编 程软 件的 说明 ,复习 教材 中有 关内 容 , 分 析程 序运 行结 果。 三、实验设备 2 、 开关 量输 入 / 输出 实验 箱 3、 计算 机 4、 编程 电缆 注 意: 1) 开关量输入/输出实验 箱内的钮子开关用来产生模拟的 开关量输入 信 号; 2) 开关量输入/输出实验箱内的LED 用来指示开关 量输出信号; 3) 编程电缆在连接PLC 与计算机时请注意方向。 四、实验内容 1 、梯形图 1 、 FX 系列可 编程 序控 制器 一只 一套 5、 GX Developer Version 7.0 软件 一套

2、梯形图程序 0LD xooo 1OUT YOOO X001 2LD 3OR¥001 4AN I X002 5OUT Y001 6OUT TO K50 9MPS 10AHI TO 11OUT Y002 12MPP 13ASD TO 14OUT¥003 15LD X003 16RST CO 18LD X004 19OUT CO K5 22LD CO 23OUT Y004 24END 3、时序图

r 时序10 □ ?Si 正在进荷囲1SL 金冃勖厂手祜r XI广X3厂X5厂K1Q拧应C 40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创Q,220,200,13Q -1?-14D ,1如■!? 如也 40 如厂「 五、实验步骤 1、程序的编辑、检查和修改; 2、程序的变换; 3、程序的离线虚拟设备仿真测试; 4、程序写入PLC; 5、用PLC运行程序; 6、比较程序的分析结果与实际运行结果。 六、实验报告 1、实验梯形图程序的编写; 2、梯形图程序的理论分析与结果; 3、梯形图程序的实际运行结果; 4、结论。 七、实验心得 通过这样一次实验,我对GX Developer Version 7.0 软件的使用方 法更加的熟悉了,也了解到在实验中需要我们集中精力,仔细认真地完成■XDU "Tlr-.Ll-t-1!- D LJ D-IT--1 z?E I4J 一 — Ti ll IL — 」 ill-t-ll-r — 1

PLC实验定时器计数器实验

实验二定时器、计数器实验 一、目的要求 1、了解和熟悉编程软件的使用方法。 2、了解写入和编辑用户程序的方法。 3、掌握定时器、计数器的使用。 二、实验设备 台达可编程序控制器一台;PLC实验箱一台;装有WPL编程软件和开发软件的计算机一台;编程连接电缆一根。 三、实验内容 1、实验原理 定时器相当于继电器电路中的时间继电器,可在程序中作延时控制。 可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms、10ms、100ms等不同规格。(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个设定值寄存器(字),一个当前值寄存器(字)。设定值寄存器(字)存储编程时赋值的计时时间设定值。当前值寄存器记录计时当前值。这些寄存器为16位二进制存储器。其最大值乘以定时器的计时单位值即是定时器的最大计时范围值。定时器满足计时条件开始计时,当前值寄存器则开始计数,当当前值与设定值相等时定时器动作,常开触点接通,常闭触点断开,并通过程序作用于控制对象,达到时间控制的目的。 TMR为十六位定时器,当该指令执行时,其所指定的定时器线圈受电,定时器开始计时,当到达所指定的定时值(计时值≥设定值),其接点动作如下:CNT为十六位计数器,当该指令由Off→On执行,表示所指定的计数器线圈由失电→受电,则该计数器计数值加1,当计数到达所指定的定数值(计数值 = 设定值),其接点动作如下:?? 当计数到达之后,若再有计数脉冲输入,其接点及计数值均保持不变,若要重新计数或作清除的动作,请利用RST指令。 编程使PLC输出Y0输出3秒的脉冲,PLC输入1对脉冲计数,计数值为10时,PLC输出Y1输出为1,第11个脉冲清零。 OUTPUT00

第5章习题解答

第5章思考题及习题5参考答案 一、填空 1.如果采用晶振的频率为3MHz,定时器/计数器T x(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为,方式1的最大定时时间为,方式2的最大定时时间为。 答:32.768ms,262.144ms,1024μs 2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率的。 答:1/24 3.定时器/计数器用作定时器模式时,其计数脉冲由提供,定时时间与有关。 答:系统时钟信号12分频后,定时器初值 4.定时器/计数器T1测量某正单脉冲的宽度,采用方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度为。 答:方式1定时,131.072ms。 5. 定时器T2 有3种工作方式:、和,可通过对寄存器中的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON 6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)= ,(TL1)= 。 答:FCH,18H。 二、单选 1.定时器T0工作在方式3时,定时器T1有种工作方式。 A.1种 B.2种 C.3种D.4种 答:C 2. 定时器T0、T1工作于方式1时,其计数器为位。 A.8位 B.16位 C.14位 D.13位 答:B 3. 定时器T0、T1的GATE x=1时,其计数器是否计数的条件。

A. 仅取决于TR x状态 B. 仅取决于GATE位状态 C. 是由TR x和INT x两个条件来共同控制 D. 仅取决于INT x的状态 答:C 4. 定时器T2工作在自动重装载方式时,其计数器为位。 A.8位 B. 13位 C.14位 D. 16位 答:D 5. 要想测量INT0引脚上的正单脉冲的宽度,特殊功能寄存器TMOD的内容应为。 A.87H B. 09H C.80H D. 00H 答:B 三、判断对错 1.下列关于T0、T1的哪些说法是正确的。 A.特殊功能寄存器SCON,与定时器/计数器的控制无关。对 B.特殊功能寄存器TCON,与定时器/计数器的控制无关。错 C.特殊功能寄存器IE,与定时器/计数器的控制无关。错 D.特殊功能寄存器TMOD,与定时器/计数器的控制无关。错 2.定时器T0、T1对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持 续时间不小于1个机器周期。特殊功能寄存器SCON与定时器/计数器的控制无关。错 3.定时器T0、T1对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于2个机器周期。对 四、简答 1.定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合? 答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。 2.TH x与TL x(x=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx与TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新值要等当前计数器计满后才能刷新。 3.如果系统的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少? 答:晶振的频率为24MHz, 机器周期为0.5μs。

实验三单片机定时计数器实验

实验三单片机定时/计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱(lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD

用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b;方式0,记数器 movTH0, #0 movTL0, #0 setbTR0;开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用“与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh

8254定时计数器应用实验报告

XX 大学实验报告 课程名称: 实验项目名称:8254定时/计数器应用实验学院:信息工程学院 专业:通信工程 指导教师: 报告人:学号:班级: 实验时间: 实验报告提交时间:

教务处制

单元的内容外,还可以读出状态寄存器的内容。 (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: n=fCLKi÷fOUTi、其中fCLKi 是输入时钟脉冲的频率,fOUTi 是输出波形的频率。 图(1)是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述:(1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。 图(1)8254的内部借口和引脚8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表

1所示。 表1 8254的方式控制字 表2 8254 读出控制字格式 表3 8254 状态字格式 8254 实验单元电路图如下图所示:

五、实验步骤及相应操作结果 1. 计数应用实验 编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+ 作为CLK0 时钟,OUT0 连接MIR7,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符“M”。 实验步骤: (1)实验接线如图2所示。 (2)编写实验程序,经编译、链接无误后装入系统。 (3)运行程序,按动KK1+产生单次脉冲,观察实验现象。(4)改变计数值,验证8254 的计数功能。

实验报告五 定时器计数器实验

信息工程学院实验报告 课程名称:微机原理与接口技术Array 实验项目名称:定时器/计数器实验实验时间: 班级:姓名:学号: 一、实验目的 1. 掌握8254 的工作方式及应用编程。 2. 掌握8254 典型应用电路的接法。 二、实验设备 PC 机一台、TD-PITD+实验系统一套。 三、实验原理 8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能: (1)有 3 个独立的16 位计数器。 (2)每个计数器可按二进制或十进制(BCD)计数。 (3)每个计数器可编程工作于 6 种不同工作方式。 (4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。 (5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。 (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: n=f CLKi ÷f OUTi、其中f CLKi 是输入时钟脉冲的频率,f OUTi 是输出波形的频率。 图5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述: (1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。

图5-1 8254 的内部接口和引脚 8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表5-1~5-3 所示。 表5-1 8254 的方式控制字格式 表5-2 8254 读出控制字格式 表5-3 8254 状态字格式 8254 实验单元电路图如下图所示:

第五章定时器/计数器

第五章MCS-51定时器/计数器及其应用 5.1定时方法概述 在单片机的应用中,可供选择的定时方法主要有: 1.软件定时 软件定时是靠执行一个循环程序以进行时间延迟。软件定时的特点是时间较精确,且不需外加硬件电路。但软件定时要占用CPU的时间,增加CPU开销,因此软件定时的时间不宜太长。 当单片机时钟确定后,每条指令的指令周期是确定的,在指令表中用振荡周期表示出来了。因此,根据程序执行所用的总的振荡周期数和振荡频率,可以较准确的计算,程序执行完所用的时间。软件延时是实际经常采用的一种短时间定时方法。 例4-16 ORG 1000H TIME:MOV R1, #0FAH ;12个振荡周期 L1 :MOV R0, #0FFH ;12个振荡周期 W1 :DJNZ R0 , W1 ;24个振荡周期 DJNZ R1 , L1 ;24个振荡周期 NOP ;12个振荡周期 NOP ;12个振荡周期 RET ;24个振荡周期 计算延时时间: N=12+(12+24×255+24)×250+12+12+24 =1539060个振荡周期 如果?=6MHz T?=1/?=1/6μs Tt=N×T?=1539060×1/6μS=256510μS=0.25651S 调整R 0和R 1 中的参数,可改变延时时间,如果需要加长延时间,可以增加循环嵌入。 当延时时间较长、不便多占用CPU时间的情况下,一般采用定时器方法。

2.内部可编程定时器 这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。此外,由于采用计数方法实现定时,因此可编程定时器都兼有计数功能,可以对外来脉冲进行计数。 3.外部扩展专用定时器 对于时间较长的定时,常使用外部扩展专用定时器完成。这种方法定时全部由硬件电路完成,不占用CPU时间。例如:DALLAS 公司的DS1302低功耗时钟芯片.它可以对年月日时分秒计时,并且有闰年补偿功能,它可以很方便地和单片机接口. 5.2 51单片机内部的定时器/计数器 作为基本组成内容,8051单片机共有两个可编程的定时器/计数器,分别称定时 器/计数器0和定时器/计数器1。它们都是十六位加法计数结构,分别由TH 0和TL 及TH 1和TL 1 两个8位计数器组成,它们具有计数和定时两种工作方式以及四种工作模 式。两个特殊功能寄存器(定时器控制寄存器TCON和定时器方式寄存器TMOD)用于确定定时器/计数器的功能和操作方式。图5-1给出了定时器/计数器的结构框图, 它反映了单片机中微处理器、寄存器TCON和TMOD与定时器T 0、T 1 之间的关系。计数 器的输入脉冲源可以是外部脉冲源或系统时钟振荡器,计数器对这两个输入脉冲之一进行递增计数。 顾名思义,MCS-51的每个定时器/计数器都具有定时和计数两种功能。

单片机实验之定时器计数器应用实验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。

四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数, 每计满100个脉冲,则取反P1.0口线状态。 汇编程序: START: LJMP MAIN ORG 0100H MAIN: MOV IE, #00H MOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1 LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 AJMP LOOP END C语言程序: #include sbit Y=P1^0; void main() { EA=0; ET1=0; TMOD=0x60; TH1=0x9C; TL1=0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } }

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用Array实验项目名称:51定时器实验实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP) 2、51单片机的相关寄存器设置 方式控制寄存器TMOD: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下: 1. 工作方式选择位M1、M0 3、51单片机定时器的工作过程(逻辑)方式一 方式1:当M1M0=01时,定时器工作于方式1。

T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216-a)μS。 4、51单片机的编程 使用MCS-51单片机的定时/计数器的步骤是: .设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0x16。 .设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12×(T_all – a)/fosc a = T_all – T×fosc/12 a = – T×fosc/12 (注意单位) THx = a / 256;TLx = a % 256; .确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1;EA = 1; 还需要编写中断服务函数: void T0_srv(void)interrupt 1 using 1 { TL0 = a % 256; TH0 = a / 256; 中断服务程序段} .启动定时器:TR0(TR1)= 1。 四、实验内容过程及结果分析: 利用protues仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位led数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1s。刚开始led数码管显示9,每过一秒数码管显示值减一,当显示到0时返回9,依此反复。然后设计00-59的两位秒表显示程序。 (1)实现个位秒表,9-0

实验三定时器计数器应用实验一

定时器/计数器应用实验一 设计性试验 2012年11月14日星期三第三四节课 一、实验目的 1、掌握定时器/计数器定时功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P 1.1口线上接示波器观察波形。 三、电路原理图

四、实验程序流程框图和程序清单及实验结果 /********* 设计要求:(a)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us的连续方波 编写:吕小洋 说明:用定时器1的方式1以查询方式工作 时间:2012年11月10日 ***************/ ORG 0000H 开始 系统初始化

START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #00010000B ;设置定时器1为工作方式1 MOV TH1, #0FFH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动定时器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 MOV TH1, #0FFH ;重置计数初值 MOV TL1, #9CH CLR TF1 ;清除计数溢出标志 CPL P1.0 ;输出取反 LJMP LOOP ;重复取反 END

实验三-定时器、计数器应用实验二

实验三-定时器、计数器应用实验二

定时器/计数器应用实验二 设计性试验 2012年11月21日星期三第三四节课 一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图

开始 系统初始化装计数初值并 启动定时器 定时? 时间到 输出取反 结束 清除溢出标志N Y 四、实验程序流程框图和程序清单及实验结果 /********* 设计要求:(1)单片机的定时器/计数器以查询方式工作,设定计数功能, 对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0 口线状态,在P1.0口线上接示波器观察波形 编写:吕小洋 时间:2012年11月16日18:09:40 ***************/ ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #01100000B ;设置计数器1为工作方式2 MOV TH1, #9CH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动计数器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 CPL P1.0 ;输出取反 CLR TF1 ;清除计数溢出标志 LJMP LOOP ;重复取反 END

单片机实验-定时器计数器应用实验二教学文稿

单片机实验-定时器计数器应用实验二

定时器/计数器应用实验二 一、实验目的和要求 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、实验内容或原理 1、利用单片机的定时器/计数器以查询方式计数外 部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。 2、利用单片机的定时器/计数器以中断方式计数外 部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。 三、设计要求 1、用Proteus软件画出电路原理图,单片机的定时 器/计数器以查询方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满100 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时 器/计数器以中断方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满200

个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、电路原理图。 4、实验程序流程框图和程序清单。 5、实验结果(波形图)。 6、实验总结。 7、思考题。 五、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续 方波,利用定时器1,对 P1.0口线上波形进行计数,满 50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 原理图:

程序清单: /*功能:用计数器1以工作方式2实现计数(查询方式)每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000H START:MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H SETB TR1

单片机实验-定时器计数器应用实验二

定时器/计数器应用实验二 一、实验目的和要求 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、实验内容或原理 1、利用单片机的定时器/计数器以查询方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 2、利用单片机的定时器/计数器以中断方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 三、设计要求 1、用Proteus软件画出电路原理图,单片机的定时 器/计数器以查询方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满100 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时 器/计数器以中断方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满200 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、电路原理图。 4、实验程序流程框图和程序清单。 5、实验结果(波形图)。 6、实验总结。 7、思考题。 五、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续 方波,利用定时器1,对P1.0口线上波形进行计数,满 50个,则取反P1.1口线状态,在P 1.1口线上接示波器 观察波形。 原理图:

程序清单: /*功能:用计数器1以工作方式2实现计数(查询方式)每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000H START:MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP LOOP1:CPL P1.0

实验四 8253定时计数器应用

实验四8253定时/计数器应用 1.实验目的 掌握8253命令字的设置及初始化和8253的工作方式及应用编程 2.实验内容 8253是INTEL公司生产的通用外围接口芯片之一,它有3个独立的16位计数器,计数 频率范围为0-2MHZ。它所有的计数方式和操作方式都可通过编程控制。其功能是延时 终端、可编程频率发生器、事件计数器、倍频器、实时时钟、数字单稳和复杂的电机控 制器。 3.实训步骤 实现方式0的电路图。设8253端口地址为:40H-43H 要求:设定8253的计数器2工作方式为0 ,用于事件计数,当计数值为5时,发出 中断请求信号,8088响应中断在监视设备上显示M。本实训利用KK1作为CLK输 入,故初值设为5时,需按动KK1键6次,可显示一个 M. 实验七 8253定时/计数器应用实验 一.实验目的 1.熟悉8253在系统中的典型接法。 2.掌握8253的工作方式及应用编程。 二.实验设备

TDN86/88教学实验系统 一台 三.实验内容 (一)系统中的8253芯片 图7-1 8253的内部结构及引脚 1. 8253可编程定时/计数器介绍 8253可编程定时/计数器是Intel公司生产的通用外围芯片之一。它有3个独立的十六位计数器,计数频率范围为0-2MHz。它所有的计数方式和操作方式都通过编程的控制。 8253的功能是:(1)延时中断(2)可编程频率发生器(3)事件计数器 (4)倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器

8253的工作方式:(1)方式0: 计数结束中断(2)方式1: 可编程频率发生器 (3)方式2: 频率发生器(4)方式3: 方波频率发生器 (5)方式4: 软件触发的选通信号 (6)方式5:硬件触发的选通信号 8253的内部结构及引脚如图7-1所示,8253的控制字格式如图7-2所示。 图7-2 8253的控制字

实验6_8254定时器计数器应用实验

实验六8253/4定时器/计数器应用实验 实验目的 (1) 掌握8254的工作方式及应用编程(参考教材) (2) 掌握8254的典型应用电路的接法 (3) 学习8254在PC系统中的典型应用方法 实验设备 PC机一台,TD-PIT-B实验装置一套。 实验内容及说明 1)计数应用实验。2)定时应用实验。3)电子发声实验 注意:在断电情况,连接好实验线路,检查无误后,通电进行实验。实验完毕,先断电,再拆线,并将导线整理好。 1. 计数应用实验: 编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1-作为CLK0时钟,OUT0连接IRQ,每当KK1-按动5次后产生中断请求,在屏幕上显示字符“M”。8254计数应用参考连接线图如图6-1。 总线接口 +5V KK1-- IRQ 图6-1 8254计数应用实验参考接线图 ;; 计数应用实验 ;;filename : ;; ----PCI卡分配的第3个I/O空间MY8254_COUNT0 EQU 0E440H MY8254_COUNT1 EQU 0E441H MY8254_COUNT2 EQU 0E442H MY8254_MODE EQU 0E443H ;;--PCI卡分配的第1个I/O空间INTCSR_BYTE0 EQU 0DC38H INTCSR_BYTE1 EQU 0DC39H

INTCSR_BYTE2 EQU 0DC3AH INTCSR_BYTE3 EQU 0DC3BH IMB4_BYTE3 EQU 0DC1FH DATA SEGMENT CSBAK DW IPBAK DW MKBAK DB DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: CLI MOV AX,DATA MOV DS,AX MOV DX,INTCSR_BYTE0 ;; 设置pci卡 MOV AL,00H OUT DX,AL MOV DX,INTCSR_BYTE1 MOV AL,1FH OUT DX,AL MOV DX,INTCSR_BYTE2 MOV AL,3FH OUT DX,AL MOV DX,INTCSR_BYTE3 MOV AL,00H OUT DX,AL MOV AX,0000H MOV ES,AX ;---------------------------------------------------MOV DI, 01C4H ; irq 9 , INT 71h, 01c4= 71h*4 ;--------------------------------------------------- MOV AX,ES:[DI] MOV IPBAK,AX ;IP MOV AX,OFFSET MYINT CLD STOSW MOV AX,ES:[DI] ;CS MOV CSBAK,AX MOV AX,SEG MYINT

实验三 单片机定时计数器应用实验(一)(学生用)

实验三单片机定时/计数器应用实验(一) 一、实验目的 (1)掌握定时/计数器的基本结构、工作原理和工作方式。 (2)掌握定时/计数器的使用和编程方法。 (3)进一步掌握中断处理程序的编写方法。 二、实验器材 (1)HJ-C52开发板一块 (2)计算机一台 (3)Keil C51编程软件 (4)数据下载线 三、实验电路 图2 电路图 四、实验说明 1、51单片机有。两个16位内部定时器/计数器(T/C,Timer/ Counter)。若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。由于脉冲周期固定由计数值可以计算出时间,有定时功能。 定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要

功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 2、TMOD (1)M1M0工作方式控制位 (2)C/T 定时器方式或计数器方式选择位 若C/T=1时, 为计数器方式;C/T = 0时, 为定时器方式。 (3)GATE 定时器/计数器运行门控标志位 当GATE=1时, T/C的启动受双重控制,即要求INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的T/C才被选通工作。若GATE=0, T/C的启动仅受TR0 (或 TR1)控制,即置 1, T/C就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。 3、TCON TF0、TF1分别是定时器/计数器T0、 T1 的溢出中断标志位, 加法计数器计满溢出时置1, 申请中断, 在中断响应后自动复0。TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。TR1、TR0 分别是定时器/计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器/计数器才开始工作, 在系统复位时被清0。 4、初始化 (1)初始化步骤 在使用51系列单片机的T/C前,应对它进行编程初始化,主要是对TCON 和TMOD编程,还需要计算和装载T/C的计数初值。一般完成以下几个步骤: 1)确定T/C的工作方式——编程TMOD寄存 2)计算T/C中的计数初值,并装载到TH和TL; 3)T/C在中断方式工作时,必须开CPU中断和源中断——编程IE寄存器; 4)启动定时器/计数器——编程TCON中TR1或TR0位。 (2)计数初值的计算 1)定时器的计数初值:

接口 定时器与计数器实验(8253)-- 8253定时器实验

同组同学学号: 同组同学姓名: 实验日期:2012 年 3月 26日交报告日期:2012 年 5月 30日实验(No. 1_1 )题目:定时器与计数器实验(8253)-- 8253定时器实验 实验目的及要求: 实验目的: 1、学习8253可编程定时器/计数器定时方法。 2、学习8253多级串联实现大时间常数的定时方法。 3、学习8088/86控制8253可编程定时器的方法。 实验要求: 用8253对标准脉冲信号进行计数,就可以实现定时功能。用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。 实验电路及连线: 连线连接孔1 连接孔2 1 8253_CS CS4 2 8253_OUT0L0 3 8253_GATE0VCC 4 8253_CLK08253_OUT1 5 8253_GATE1VCC 6 8253_CLK1F/4(1M) 7 4MHz Fin 实验说明: 1、本实验工作方式0,计数值减完后输出一个脉冲宽度的高电平。而本实验在计数值减完后,管脚状态产生变化(从高到低或从低到高)。直到下一次计数值减完。这样输出的波形为方波。 2、由于定时常数过大,就要用多级串联方式。本实验采用两级计数器。定时常数分别为100和10000。将计数器的输出接到计数器0输入。计数器0 的输出接到LED0。

实验框图: 主程序框图 源程序及分析: CONTROL equ 0c003h ;设置命令寄存器 COUNT0 equ 0c000h ;设置计数器0 COUNT1 equ 0c001h ;设置计数器1 COUNT2 equ 0c002h ;设置计数器2 code segment assume cs:code start proc near ;第一次定时器设定: mov al, 36h; ; 计数器0,16位,方式3,二进制(00110110B=36h) mov dx, CONTROL out dx, al mov ax, 1000 mov dx, COUNT0

第5章 定时器计数器2(1)

2、模式1 模式1(M1M0=01)除了使用了THn和TLn全部16位外,其它与模式0相同。 (1)计数工作方式 由于定时器/计数器以加1方式计数,假定计数值为X,则应装入定时器/计数器的初值为: 初值=216-计数值【216=初值+计数值】 所以方式1的计数值范围是:1~65536(216=65536),最大值为:65536 (2)定时工作方式 定时时间t的计算公式为:【t的时间单位为微秒(μs)】 计数值=216-初值 定时时间t=计数值×机器周期 =(216-初值)×(1/晶体振荡频率)×12 在模式1下的情况下,如果fosc=12MHz,最大定时时间为: t=(65536-初值)×(1/12)×12=65536-0=65.536ms 在模式1下的情况下,如果fosc=6MHz,最大定时时间为: t=(65536-初值)×(1/6)×12=(65536-0)×2=131.072 ms。 【例如】:若晶体振荡为12MHz,要定时2.5ms,计算初值。 要定时2.5ms,也可以用模式1。 2500=(216-初值)×(1/12)×12 初值=65536-2500=63036=32768+16384+8192+4096+1024+512+32+16+8+4=1111 0110 0011 1100 ――> THn =0xF6 和TLn=0x3C 在fosc=12MHz时,如果定时时间大于65.536ms,这时用一个定时/计数器直接处理不能实现,这时可用: 1、2个定时/计数器共同处理; 2、1个定时/计数器配合软件计数方式处理。 3、模式2 方式0和方式1的最大特点是计数溢出后,计数器为全0。因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题。这不仅影响定时精度,也给程序设计带来麻烦。方式2就是针对此问题而设置的。 该方式可省去用户软件中重装初值的指令执行时间,简化定时初值的计算方法,可以相当精确地确定定时时间。 此模式下定时器寄存器作为可自动重装载的8位计数器(TLn),如下图所示。

实验三_8253定时器计数器实器

实验三 8253定时器/计数器实验 一、实验目的 1. 学会8253 芯片与微机接口的原理和方法。 2. 掌握8253 定时器/计数器的工作原理和编程方法。 二、实验内容 编写程序,将8253的计数器0设置为方式2 (频率发生器),计数器1设置为方式3 (方 波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。 1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。 2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。 3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使 LED 的闪亮频率仍为1Hz。 三、电路图

CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1; GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz; 四、流程图及编程指南 8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz用+5V 单电源供电。8253 的六种工作方式: ⑴方式0:计数结束中断⑷方式3:方波频率发生器 ⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号 ⑶方式2:频率发生器⑹方式5:硬件触发的选通信号8253 初始化编程 1. 8253 初始化编程 8253 的控制寄存器和 3 个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。因此8255 在初始化编程时,并没有严格的顺序规定,但在编程时,必须遵守两条原则: ①在对某个计数器设置初值之前,必须先写入控制字; ②在设置计数器初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。

相关主题
文本预览
相关文档 最新文档