MCS-51定时器(计数器).ppt

上传人:牧羊曲112 文档编号:6512364 上传时间:2023-11-08 格式:PPT 页数:75 大小:815.50KB
返回 下载 相关 举报
MCS-51定时器(计数器).ppt_第1页
第1页 / 共75页
MCS-51定时器(计数器).ppt_第2页
第2页 / 共75页
MCS-51定时器(计数器).ppt_第3页
第3页 / 共75页
MCS-51定时器(计数器).ppt_第4页
第4页 / 共75页
MCS-51定时器(计数器).ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

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

1、第6章 定时器/计数器,在测控系统中,常常需要有实时时钟和计数器,以实现定时控制以及对外界事件进行计数。MCS-51内部的两个16位定时器/计数器就具有这两种功能。本章将介绍他们的结构、原理、工作方式及使用方法。5.1 定时器/计数器结构5.2 定时器/计数器的四种工作方式5.3 定时器/计数器对输入信号的要求5.4 定时器/计数器编程和应用,5.1 定时/计数器结构,5.1.1 定时/计数器的结构与原理 重点:定时的实质,定时与计数的关系5.1.2 定时/计数器方式寄存器TMOD5.1.3 定时/计数器控制寄存器TCON5.1.4 定时/计数器的初始化,返回本章首页,5.1.1 定时/计数器

2、结构与原理,定时器/计数器简称定时器,8051单片机内部有2个16位的可编程定时/计数器:定时器0(T0)和定时器1(T1)。可编程是指其功能(如工作方式、定时时间、启动方式等)可以由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有2个特殊功能寄存器(控制寄存器TCON和方式寄存器TMOD)。,定时器/计数器的结构,这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。,.,从结构图可以看出:16位的定时器/计数器分别由两个专用寄存器组成,即T0由TH0和TL0构成;T1由TH1和TL1构成。这些寄存器由于存放定时和计数初值。此外,内部还有一个8位的TMOD和一个8位的T

3、CON。TMOD 主要用于选定定时器的工作方式;TCON主要用于控制定时器的启动与停止。,定时器/计数器的原理,16位的定时器/计数器的实质上是一个加1的计数器,其控制电路受软件控制、切换。计数的次数和时间之间是相关的。,只要计数脉冲的间隔相等,计数值就代表时间的流逝,当定时器/计数器为定时工作方式时,加1信号由振荡器的12分频产生,即每过一个机器周期,计数值增1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。由于一个机器周期等于12个振荡周期,所以 计数频率 fcount=1/12fosc 例:晶振为12MHZ,则计数周期为 T=1/(12*106)Hz*1/12=1微秒 最

4、短的定时周期,当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿触发计数 采样过程:当输入脉冲信号从1到0的负跳变时,计数器就自动加1。由于检测一个由1到0的跳变需要两个机器周期,所以 计数的最高频率为振荡频率的1/24。为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高低电平均需保持一个机器周期以上。(占空比没有限制),在每个机器周期的S5P2期间采样引脚。,结论:单片机中的定时器和计数器是一个东西,只不过计数器用来记录外界发生的事情,而定时器则是由单片机提供的一个非常稳定的计数源。,综上所述,我们已知定时器/计数器是一种可编程部件,所以在其开始工作之

5、前,CPU必须将一些命令(控制字)写入定时器/计数器。这个过程称为定时器/计数器的初始化。当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计数溢出,才可能中断CPU当前操作。,返回本节,5.1.2 定时器/计数器方式寄存器TMOD(89H),GATE,C/T,M,1,0,M,GATE,C/T,1,M,0,M,控 制 T,1,控 制 T,0,89H,和T 类同,0,1,M,0,M,00,01,10,11,方 式,方式0 13位,方式1 16位,方式2 自动重装,方式3 适用T0,0,1,定时器模式,计数器模式,0,1,与INT

6、 无关,0,0,与INT 有关,图5-2 定时器工作模式寄存器TMOD,M1M0:方式选择位,C/T:功能选择位,GATE:门控位,返回本节,GATE=1时,若TR1=1,并且 INT1=1,允许T0计数 若TR1=0,或INT1=0,都禁止T0计数,GATE=0,若TR1=1,允许计数;若TR1=0,禁止计数,返回,由于在不同方式下计数器位数不同,因而最大计数值(量程)也不同。方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器分成两个8位计数器,两个M均256,返回,TR1(0):运行控制位,5.1.3 定时器/计数器控制寄存器TCON(8

7、8H),图5-3 定时器工作模式寄存器TCON,TF1(0):溢出标志,返回本节,5.1.4 定时器/计数器的初始化,初始化的步骤如下:确定工作方式-对TMOD赋值置定时或计数的初值-可直接写入TH0(1),TL0(1)根据需要开放定时器/计数器的中断启动定时器/计数器。当实现了启动要求之后,定时器就按规定的工作方式和初值开始计数或定时。,因为定时器/计数器是作“加1”计数,并在计满溢出时产生中断,初值X可以这样计算:X=M-计数值(计数次数)例:在6MHZ主频下,要求产生1ms的定时,计算初值分析:因为定时器每“加1”一次所需的时间为2s,如果要产生1ms的定时,需加500次,500即为计数

8、值。方式1下工作,初值 X=M-计数值=65536-500=FE0CH,返回本章首页,5.2 定时器/计数器的4种工作方式,由上节可知,通过对TMOD中的M1、M0的设置,可以选择四种工作方式。也就是每个定时器可构成4种电路结构模式。在模式0、1和2,T0和T1的工作方式相同,在模式3,两个定时器的方式不同。下面以T1为例,分述各种工作方式的特点和用法。,1方式0,16位寄存器中只用13位,其中TL1的高三位未用。,2方式1,16位寄存器全用,3方式2,这种工作方式可省去用户软件中重装常数的程序,并可产生相当精度的定时时间。,4方式 3,该方式只适用于定时器T0,T0被拆成两个独立的8位计数器

9、TH0和TL0。,1.方式3下的T0,2.T0工作在方式3下T1的各种工作方式,T0工作在方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合.,.T1工作方式0,T1工作方式1,(T0工作在方式3时T1为方式1的工作示意图),T1工作方式2,(T0工作在方式3时T1为方式2的工作示意图),T1工作方式3,T1的控制字M1M0=11时,T1停止计数,注意:在T0为方式3时,T1运行的控制条件只有2个,即C/T和M1,M0.,返回本章首页,5.3 定时器/计数器对输入信号的要求,(1)当T0或T1被选定为定时工作模式时,定时器/计数器的输入脉冲的周期与机器

10、周期一样,为时钟振荡频率的1/12.若 f振荡=12MHz,则计数速率为1MHz(2)当T0或T1用作计数器时,计数脉冲来自相应的外部输入引脚.一次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡频率的1/24.如:f振荡=12MHz,则可输入500KHz.注:外部输入信号脉冲宽度至少保持1个机器周期.,返回本章首页,6.4 定时/计数器及中断系统综合应用,【例6.1】设MCS-51单片机系统时钟频率CLK为6MHZ,要在P1.0引脚上输出1个周期为1毫秒的方波,占空比为50%的方波信号.如下图:,P1.0,6.4 定时/计数器及中断系统综合应用,【例6.1

11、】设MCS-51单片机系统时钟频率CLK为6MHZ,要在P1.0引脚上输出1个周期为1毫秒的方波,占空比为50%的方波信号.如下图:,P1.0,解:(1)计算初值:机器周期=2s=2*10-6s(216-X)210-6=110-3,即(216-X)=500,X=65036X=FEOCH=1111111000001100B则TH0=0FEH,TL0=0CH,(2)初始化程序:对定时器初始化和中断初始化即对IP,IE,TCON,TMOD的相应位设置,并将计数初值装入定时器.如:TMOD=01H,定时方式1IP=00H,IE=92H,TCON=10H即ET0=1,EA=1,TR0=1,方法一:中断方

12、式:,ORG 0000H RESET:AJMP MAIN ORG 000BH AJMP IT0P ORG 0100H MAIN:MOV SP,#60H MOVTMOD,#01H,ACALL PT0M0HERE:AJMP HEREPTOM0:MOV TL0,#0CH MOV TH0,#0FEH SETB TR0 SETB ET0 SETB EA RET,ITOP:MOV TL0,#0CH MOV TH0,#0FEH CPL P1.0 RETI,方法二:软件查询,ORG0000H MOVTMOD,#01H LOOP:MOVTH0,#0FEH MOVTL0,#0CH SETBTR0,LOOP1:JN

13、BTF0,LOOP1 CLRTR0 CPLP1.0 SJMP LOOP,【例6.2】设MCS-51单片机系统时钟频率CLK为6MHZ,请编出利用定时/计数器T0在P1.0引脚上产生周期为2秒,占空比为50%的方波信号的程序(1)主程序任务:1)T0工作方式的设定:选择方式1(16位方式)(最大定时131ms)2)定时常数的设定:TC=216-100ms/2s=15536=3CB0H每隔100ms中断一次,中断10次为1s,即:TH0应装3CH,TL0应装B0H。3)中断管理:允许T0中断,开放总中断 即:IE应装10000010B。4)启动定时器T0:SETBTR0 5)设置软件计数器初值:(

14、如使用R7)即R7应装0AH 6)动态停机:SJMP$,主程序如下:MAIN:MOVTMOD,#01H;设定T0为方式1MOV TH0,#3CH;装入定时常数高8位MOVTL0,#0B0H;装入定时常数低8位MOVIE,#82H;开放T0中断SETBTR0;启动T0MOVR7,#0AH;设置软件计数器SJMP$,(2)中断服务程序任务:1)恢复T0常数;2)软件计数器减1;3)判断软件计数器是否为0。为0时,改变P1.0状态,并恢复软件计数器初值;不为0时中断返回。程序如下:TOINT:MOVTL0,#0B0H;恢复定时常数MOVTH0,#3CH;DJNZR7,NEXTCPLP1.0 MOVR

15、7,#0AHNEXT:RETI,完整程序如下:,ORG 0000H MOVTH0,#3CH AJMP MAINMOVTL0,#0B0HORG 000BH MOV IE,#82H AJMP TOINT SETBTR0ORG 0030H MOVR7,#0AH MAIN:MOV TMOD,#01H,SJMP$TOINT:MOVTL0,#0B0HMOVTH0,#3CHDJNZR7,NEXTCPLP1.0MOVR7,#0AHNEXT:RETIEND,方式2的应用,【例6.3】把T0(P3.4)作为外部中断请求输入线即T0引脚发生负跳变时,向CPU请求中断。下面程序T0定义方式1计数,即计数输入端T0发生

16、一次负跳变,计数器加1即产生溢出标志,向CPU发中断,程序在T0产生一次负跳变后,使P1.0产生周期为1ms的方波,其中定时器T1用于方式2产生0.5ms定时。,T=1s,T0(P3.4),P1.0,T1为方式2定时,T0为方式1计数,T0的计数初值:TH0=0FFH,TL0=0FFHT1的定时初值:(28-X)210-6=510-4,X=06H,方法一:(中断方式)ORG 0000HRESET:AJMP MAIN;复位入口转主程序 ORG 000BH LJMP IT0P;转T0中断服务程序 ORG 001BH LJMP IT1P;转T1中断服务程序,ORG 0100HMAIN:MOV SP,

17、#60H ACALL PT0M2;对T0、T1初始化LOOP:MOV C,F0;T0产生中断了吗,产生过,则F0=1 JNC LOOP SETB TR1;启动T1 SETB ET1;允许T1中断HERE:AJMP HERE,PT0M2:MOV TMOD,#26H;T0,T1初始化程序 MOV TL0,#0FFH;T0置初值 MOV TH0,#0FFH SETB TR0;启动T0 SETB ET0;允许T0中断,MOV TL1,#06H,T1置初值 MOV TH1,#06H CLR F0 SETB EA;CPU开放中断 RET,IT0P:CLR TR0;停止T0计数 SETB F0;建立产生中断

18、标志 RETIIT1P:CPL P1.0;P1.0位取反 RETI,方式2应用计数模式,【例6.4】用定时器T1的方式2对外部计数,要求每计满100个数,将P1.0引脚信号求反.解:P3.5引脚输入外部信号,每发生1次负跳变计数器加1,每输入100个脉冲,计数器溢出中断,将P1.0引脚求反.TMOD=60H,注意:此处T0不能为方式3,其它皆可.X=28-100=156=9CH,程序清单:,ORG0000H LJMPMAIN ORG001BH CPLP1.0 RETI,ORG0100HMAIN:MOVTMOD,#60H MOVTL0,#9CH MOVTH0,#9CH SETBTR1HERE:A

19、JMPHERE,方式3的应用,【例6.3A】T0方式3,分别产生200us和400us的定时并使P1.0和P1.1分别产生400us和800us的方法,fosc=6MHZ解:TL0用于定时200us,TH0用于定时400us(28-X)*2*10-6=200*10-6,X=156即X=9CH(28-X)*2*10-6=400*10-6,X=56即X=38H,ORG 0000HSTART:AJMP MAIN ORG 000BH AJMP P1TO ORG 001BH AJMP PIT1,MAIN:MOV SP,#60H MOV TMOD,#03H MOV TL0,#9CH MOV TH0,#38

20、H MOV TCON,#50H MOV IE,#8AH,HERE:AJMP HEREPIT0:MOV TL0,#9CH CPL P1.0 RETIPIT1:MOV TH0,#38H CPL P1.1 RETI,【例6.3B】假设某MCS-51应用系统的2个外部中断源已被占用,设置定时器T1工作在方式2,作波特率发生器用.现要求增加1个外部中断源,并控制P1.0引脚输出1个5KHz的方波.fosc=6MHZ.,T0(P3.4),TL0为方式3计数,100s,100s,TH0为方式3定时,P1.0,(1)初值计算:TL0=0FFH,(28-X)210-8=110-4,X=156=9CH即TH0=9

21、CH ORG0000H LJMPMAIN ORG000BH LJMP TL0INT,ORG 001BH LJMP TH0INT ORG0100HMAIN:MOV TMOD,#27H;00100111 MOV TL0,#0FFH MOV TH0,#9CH,MOVTL1,#data1;data据波特率常数定 MOVTH1,#data1 MOV TCON,#55H;边沿触发,启动定时 MOV IE,#9FH,中断允许 TL0INT:MOVTL0,#0FFH,RETITH0INT:MOVTH0,#9CH CPLP1.0 RETI,中断处理,门控位 GATE的应用,【例6.4】门控GATE1使定时/计数

22、器T1启动计数受INT1的控制。当GATE1为1,TR为1时,只有INT1引脚输入高电平,T1才被允许计数,故可测引脚P3.3上正脉冲宽度。(机器周期数)解:门控为1,定时器启动计数受外部输入电平的影响,可测外部是输入脉冲宽度。被测脉冲输入P3.3(INT1),T1为定时方式。,ORG0000H RESET:AJMPMAIN ORG0100HSTART:MOV TMOD,#90H;门控定时,T1为方式1 MOV SP,#60H,MOV TL1,#00H MOV TH1,#00HLOOP1:JB P3.3 LOOP1;SETB TR1 LOOP2:JNB P3.3 LOOP2LOOP3:JB P

23、3.3 LOOP3,CLR TR1 MOV A,TL1LOOP3:LCALLDIR AJMPLOOP3,将A中的T1计数值送显示缓冲区并转换成可显示的代码,【例6.5】P3.4 输入低频负脉冲,要求P3.4每次发生负调变时,P1.0输出一个400us的同步脉冲。,方法一:软件查询方式,START:MOV TMOD,#06H;T0为方式2外部计数MOV TH0,#0FFHMOV TL0,#0FFHSETB TR0;允许计数LOOP1:TBC TF0,PTF0 1;溢出后 AJMP LOOP1,PTFO1:CLR TR0 MOV TMOD,#02H;T0为方式2定时 MOV TH0,#0AH;50

24、0us定时 MOV TL0,#0AH CLR P1.0 SETB TR0,LOOP2:JBC TF0,PTFO2 AJMP LOOP2PTFO2:SETB P1.0 CLR TR0 AJMP START,方法二:中断方式,解:P3.4即T0为方式2,计数,初值#0FFH P3.5即T1为方式2,定时,初值#38H,400us ORG 0000H AJMP MAIN ORG 0000BH AJMP PT0,ORG 001BH AJMP PT1 ORG 1000HMAIN:MOV TMOD,#26H MOV TL0,#0FFH MOV TH0,#0FFH,MOV TL1,#38H MOV TH1,#38H MOV IE,#8AH SETB TR0 HERE:AJMP HEREPT0:CLR TR0,CLR P1.0 SETB TR1 RETI PT1:SETB P1.0 CLR TR1 SETB TR0 RETI,THANK YOU VERY MUCH!,本章到此结束,谢谢您的光临!,结束放映,返回本章首页,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号