版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章单片机的定时/计数器单片机原理、接口及应用本章重点★7.1定时计数器基本知识★7.2定时计数器结构和工作原理★7.3定时计数器的控制寄存器★7.4定时器的四种工作方式
★7.5定时计数器的应用编程7.1定时计数器基本知识8051单片机中有两个计数器T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。8031中的计数器除了能作为计数之用外,还能用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等。定时器和计数器的原理是一样的,都是进行计数操作,每次加1,加满溢出后,再从0开始计数,定时器和计数器不同之处是输入的计数信号来源不同。计数器是记录的外界发生的事情,而定时器则是由单片机供给一个非常稳定的计数源。
这个计数源就是由单片机的晶体震荡器经过12分频后获得的一个脉冲源。晶体震荡器的频率当然很准,所以这个计数脉冲的时间间隔也很准。实现定时功能,比较方便的方法是利用单片机的定时器计数器,也可以采用下面的三种方法:软件定时:软件定时不占用硬件资源,但占用了cpu的时间,降低了cpu的利用率。采用时基电路定时:例如采用555电路,外界必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行修改与控制,即不可编程。采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活,在单片机的定时计数器不够用时,可以考虑进行扩展。7.28051定时/计数器结构和工作原理★
51系列单片机片内有二个十六位定时/计数器:定时器0(T0)和定时器1(T1)。★两个定时器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合★定时/计数器实际上是16位加1计数器。
T0由2个8位持殊功能寄存器TH0和TL0构成,
T1由2个8位持殊功能寄存器TH1和TL1构成。★每个定时器都可由软件设置为定时工作方式或
计数工作方式。★T0和T1受特殊功能寄存器TMOD和TCON控制。
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。1.定时工作方式
★设置为定时器模式时:加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
★每经过一个机器周期定时器(T0或T1)的数值加1直至计数满产生溢出。★计数值N乘以机器周期Tcy就是定时时间t
。
计数值:N=满计数值-初始设定值t=计数值N×机器周期T如:当8051采用12MHz晶体时,每个机器周期为1μs,计5个机器周期即为5μs,即定时5μs。2.计数工作方式
★设置为计数工作方式时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。★当输入脉冲信号产生由1至0的下降沿时,定时器的值加1,在每个机器周期CPU采样T0和T1的输入电平。若前一个机器周期采样值为高,下一个机器周期采样值为低,则计数器加1。★由于检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。★虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。由T0或T1引脚输入计数脉冲。在每个机器周期的S5P2期间,CPU采样引脚输入电平。当前一机器周期采样到高电平,下一周期机器采样到低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期,最高计数频率不超过振荡频率的1/24,当晶振频率为12MHz时,计数频率为1/2MHz,计数脉冲的周期要大于2s。
7.3定时计数器的控制寄存器★定时器共有两个控制寄存器:定时器控制TCON(88H)
定时器工作模式寄存器TMOD(89H)1.工作模式寄存器TMOD(89H)
TMOD用于控制T0和T1的操作模式。其各位的定义如下:TMODD7D6D5D4D3D2D1D0(89H)GATEC/TM1M0GATEC/TM1M0定时器T0
定时器T1★
GATE:门控选择位
=0,非门控方式,定时/计数器由内部软件启动:
TRx=1,启动定时器工作;
TRx=0,停止定时器工作。
=1,门控方式,定时/计数器由内、外部启动:
TRx=1,同时必须引脚INTx=1,才启动。门控位GATE为1时,TRx=1,INTx=1才能启动定时器。利用这个特性可以测量外部输入脉冲的宽度。★
C/T:定时器/计数器选择位
C/T=1,计数方式,通过引脚T0(P3.4)和T1(P3.5)对外部信号进行计数。
C/T=0,定时方式,对机器周期计数。
★M1、M0——工作模式选择位。
由于有M1和M0两位,可以有四种工作方式。T0有4种工作模式,T1有3种工作模式。定时器/计数器T1不能工作在模式3。设置T1的M1M0=11,T1将停止工作。定时器/计数器的工作模式M1M0工作模式功能介绍00模式013位定时器/计数器01模式116位定时器/计数器10模式28位自动重置定时器/计数器11模式3定时器0:TL0可8位定时器/计数器,TH0为8位定时器。定时器1:不工作。TMOD各位定义及具体的意义
TF1TR1TF0TR0IE1IT1IE0IT0T1请求有/无
T1工作启/停T0请求有/无T0工作启/停INT1请求有/无INT1方式下沿/低电平
INT0请求有/无INT0方式下沿/低电平2.控制寄存器TCON(88H)
TCON寄存器中定时器控制仅用了其中高四位,其意义如下:
★TF1:T1溢出中断请求标志。
TF1=1,T1有溢出中断请求。
TF1=0,T1无溢出中断请求。
★TR1:T1运行控制位。
TR1=1,启动T1工作。
TR1=0,停止T1工作。在程序中用指令“SETBTR1”使TR1位置1,定时器T1便开始计数。“CLRTR1”使TR1清0.GATE=0时,用软件使TR1置1,则启动定时器1,
用软件使TR1清0,则停止定时器1。GATE=1时,用软件TR1置1,如果检测到引脚INT1(P3.3)输入高电平时启动定时器1。
★TF0:T0溢出中断请求标志。
TF0=1,T0有溢出中断请求。
TF0=0,T0无溢出中断请求。
★TR0:T0运行控制位。
TR0=1,启动T0工作。
TR0=0,停止T0工作。同TR1定时计数器的内部逻辑电路结构
&>1C/TC/T7.4定时器的四种工作方式
对TMOD寄存器的M1、M0位的设置,可选择四种工作方式,即方式0、方式1、方式2和方式3。下面用THX、TLX(X=1或0)表示TH1TL1TH0TL0。
模式0以及定时器T0、T1模式0下的结构模式1以及定时器T0、T1模式1下的结构模式2以及定时器T0、T1模式2下的结构模式3以及定时器T0、T1模式3下的结构
13位定时/计数器,由TLx的低5位(高3位未用)和THx的8位组成。TLx的低5位溢出时向THx进位,THx溢出时,置位TCON中的TFx标志,向CPU发出中断请求。1)方式0(M1M0=00)计数外部脉冲个数:1~8192(213)定时时间:T~8192Tfosc=12MHz,T=1us时,最大定时时间:8.19ms初始化定时/计数器时,初值N计算:定时机器周期数:N=t/T-------定时时间/机器周期计数初值:X=213-N
------计数最大值与计数值之差GATE=0时,经反相后使或门输出为1,此时仅由TRx控制与门的开启,与门输出1时,控制开关接通,计数开始;GATE=1时,由INT0引脚信号控制或门的输出,此时控制与门的开启由INT0引脚信号和TRx共同控制。
TRx=1时,INT0引脚信号高电平启动计数,低电平停止计数。常用来测量外中断引脚上正脉冲的宽度。
2)方式1(16位定时/计数器,M1M0=01
)计数外部脉冲个数范围:1~65536(216)定时时间范围:T~65536T初始化定时/计数器时,初值N计算:定时机器周期数:N=t/T-------定时时间/机器周期计数初值:X=216-N
------计数最大值与计数值之差3)方式2(自动再装入8位定时/计数器,M1M0=00)TLx为8位加1计数器,THx为8位初值暂存器。TLx计数溢出时,一方面将TFx置位,另一方面,将THx的内容重新装入TLx,但不影响THx中的内容,用于需要重复定时和计数的场合,可实现每隔预定时间发出控制信号。计数外部脉冲个数范围:1~256(28)定时时间范围:T~256T初值N计算:定时机器周期数:N=t/T计数初值:X=28-N4)方式3(M1M0=00)T0分成两个8位定时/计数器TL0和TH0;
TL0:既可计数也可定时,是一个8位定时/计数器。占用了T0
所有控制位:C/T,TR0,GATE,TF0和INT0、T0引脚;
TH0:只能作为定时器,因为T0已被TL0占用,TH0用T1的控制位:TR1、TF1;T0在方式3时T1的工作模式
如果定时/计数器T0工作在方式3,T1只能工作在0、1、2方式。此时由于T1的运行控制位TR1及计数溢出标志位TF1已被定时/计数器T0借用,这时,T1作为串行口的波特率发生器使用。
当作为波特率发生器使用时,只需要设置好工作方式,便可自动运行。如要停止工作,只需送入一个把T1设置为方式3的方式控制字。因为定时/计数器T1不能在方式3下工作,如果硬把它设置为方式3,则停止工作。T0在方式3时T1的工作模式(c)T1方式2定时器/计数器的功能和工作模式的选择是由工作模式控制寄存器TMOD和定时器控制寄存器TCON来控制的。●
工作模式控制寄存器TMOD示意图●定时器控制寄存器TCON示意图●
4种工作模式的特点1.最大定时时间不同(采用12MHz的晶体)模式0(13位)时:TMAX=8192s=8.192ms。模式1(16位)时:TMAX=65536s=65.536ms。模式2和3(两个8位)时:TMAX=256s=0.256ms。2.加载方式不同模式0和模式1的最大特点是计数溢出后,计数器全为0,因此,循环定时或计数时就要反复设置计数初值;模式2可以自动加载计数初值;模式3适合用于串行口数据传输率发生器。小结任意定时以及计数的方法:
我们采用预置数的办法,我要计100,那我就先放进65436,再来100个脉冲,就到了65536了。定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10毫秒就能了,怎么办?10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就可以了。以定时器T0在方式1下定时0.95ms为例,先将65536μs-950μs=64586μs换成十六进制数FC4AH,然后将此数的高位FC装入TH0;再将此数的低位4A装入TL0。再进行计数就可以了。还有一种简便计算方法,即将设计时初始值直接代入表中所提供的公式里,如使用定时器T0在模式0下定时1000s,设计初始值为1000,将1000分两次代入公式即可。定时计数器的初始化
在使用定时器/计数器前,应首先对其进行初始化编程。一、定时器的初始化步骤1、设置TMOD。选择工作模式和工作方式。2、设置定时器的计数初值。将初值写入TH0和TL0或TH1、TL1。3、如果需要中断,设置中断允许寄存器IE。4、设置TCON,启动定时器。可以使用位操作指令。例如:SETBTRx。使用定时器工作之前,先写入方式、控制寄存器,确定好定时器工作方式:MOVTMOD,#方式字;启动方式选择(内外共同启动/内启动) 功能选择—(计数/定时)位数选择—
(8/13/16位)MOVTHx,#XH
;计算时间常数X,MOVTLx,#XL;Tx时间常数初值装入数据寄存器
,(SETBEA ) ;开Tx中断(SETBETx)SETBTRx
;启动控制Tx定时器(启动/停止)定时器初始化编程:在主程序中进行
二、定时器/计数器初值计算
定时器/计数器的模式和方式不同,计数初值也将不同。计数器的长度为n,则计数的最大值为2n
。
1、工作于定时方式计数脉冲由内部的时钟提供,每个机器周期进行加1。设晶振频率为fosc,则计数脉冲的频率为fosc/12,计数脉冲周期T=1/(fosc/12)。如果进行定时时间为t,计数初值为X,则:初值X=2n
-t×fosc/122、工作于计数方式当工作在计数方式时,对外部脉冲计数。利用计数器计数结束产生溢出的特性,来计算初值X。则有:X=2n—计数次数上节练习与回顾1、下面哪一种仅适用于定时器T0()A.方式0B.方式1C.方式2D.方式32、若51单片机的晶振频率是24MHz,则其内部定时器/计数器利用计数器对外部输入脉冲的最高计数频率是()A.1MHzB.6MHzC.12MHzD.24MHz3、8031定时/计数器是否计满可采用等待中断的方法进行处理,也可通过对()的查询方法进行判断。
A.OV标志B.CY标志C.中断标志D.奇偶标志4、在下列寄存器中,与定时/计数控制无关的是()A、TCON(定时控制寄存器)B、TMOD(工作方式控制寄存器)C、SCON(串行控制寄存器)D、IE(中断允许控制寄存器)答:有四种工作模式:模式0,模式1,模式2,模式3
(1)
模式0:选择定时器的高8位和低5位组成一个13位定时器/计数器。TL低5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并申请中断。
定时时间t=(213-初值)×振荡周期×12;计数长度位213=8192个外部脉冲
(2)
模式1:与模式0的唯一差别是寄存器TH和TL以全部16位参与操作。定时时间t=(216-初值)×振荡周期×12;计数长度位216=65536个外部脉冲
(3)
模式2:把TL0和TL1配置成一个自动重装载的8位定时器/计数器。TL用作8位计数器,TH用以保存初值。TL计数溢出时不仅使TF0置1,而且还自动将TH中的内容重新装载到TL中。
定时时间t=(28-初值)×振荡周期×12;计数长度位28=256个外部脉冲
(4)
模式3:对T0和T1不大相同
若设T0位模式3,TL0和TH0被分为两个相互独立的8位计数器。TL0为8位计数器,功能与模式0和模式1相同,可定时可计数。
TH0仅用作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1控制。
定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为0~2。
5、89C51定时器有哪几种工作模式?有何区别?6、根据定时器/计数器0方式1逻辑结构图,分析门控位GATE取不同值时,启动定时器的工作过程。
答:当GATE=0:软件启动定时器,即用指令使TCON中的TR0置1即可启动定时器0。GATE=1:软件和硬件共同启动定时器,即用指令使TCON中的TR0置1时,只有外部中断INT0引脚输入高电平时才能启动定时器0。7、单片机8031的时钟频率为6MHz,若要求定时值分别为0.1ms,1ms,10ms,定时器0工作在模式0、模式1和模式2时,其定时器初值各应是多少?
解:
(1)
0.1ms
模式0:
T0低5位01110B=0EH
T0高8位:11111110B=FEH
模式1:模式2:
(2)
1ms
模式0:
T0低5位01100B=0CH
T0高8位:11110000B=F0H
模式1:
模式2:
在此情况下最长定时为512μs,无法一次实现定时1ms,可用0.1ms循环10次
(3)
10ms
模式0:
T0低5位11000B=18H
T0高8位:01100011B=63H
模式1:
模式2:在此情况下最长定时为512μs,无法一次实现定时10ms,可用0.1ms循环100次8、3、设MCS-51单片机fosc=12MHz,要求T0定时150µs,分别计算采用定时方式0、方式1和方式2时的定时初值。答:方式0的定时初值:IF6AH方式1的定时初值:FF6AH方式2的定时初值:6AH9、
设MCS-51单片机fosc=6MHz,问单片机处于不同的工作方式时,最大定时范围是多少?
答:方式0的最大定时范围:131,072µs方式1的最大定时范围:16,384µs方式2的最大定时范围:512µs例1
设单片机的振荡频率为12MHz,用定时器/计数器0的模式1编程,在P1.0引脚产生一个周期为1000µs的方波,定时器T0采用中断的处理方式。定时器的分析过程。工作方式选择需要产生周期信号时,选择定时方式。定时时间到了对输出端进行周期性的输出即可。
工作模式选择
根据定时时间长短选择工作模式。
首选模式2,可以省略重装初值操作。定时器的应用举例
定时时间计算:周期为1000µs的方波要求定时器的定时时间为500µs,每次溢出时,将P1.0引脚的输出取反,就可以在P1.0上产生所需要的方波。定时初值计算:振荡频率为12MHz,则机器周期为1µs。
设定时初值为X,(65536-X)×1µs=500µs
X=65036=0FE0CH定时器的初值为:TH0=0FEH,TL0=0CH
C语言程序:#include<reg52.h> //包含特殊功能寄存器库sbit P1_0=P1^0; //进行位定义voidmain() { TMOD=0x01; //T0做定时器,工作在模式1 TL0=0x0c; TH0=0xfe; //设置定时器的初值
ET0=1; //允许T0中断
EA=1; //开中断
TR0=1; //启动定时器
while(1); //等待中断}
voidtime0_int(void)interrupt1{ //中断服务程序
TL0=0x0c; TH0=0xfe; //定时器重赋初值
P1_0=~P1_0; //P1.0取反,输出方波}
汇编语言程序:
ORG 0000H SJMP MAIN ORG 000BH LJMP TIME0MAIN:MOV TMOD,#01H ;T0定时,模式1 MOV TL0,#0CH ;置定时初值
MOV TH0,#0FEH SETB ET0 ;定时器T0开中断
SETB EA ;CPU开中断
SETB TR0 ;启动定时器T0 SJMP $ ;等待定时器溢出TIME0:MOV TL0,#0CH ;中断服务程序
MOV TH0,#0FEH ;重装定时初值
CPL P1.0 ;P1.0取反,输出方波
RETI ;中断返回
END例2
设单片机的振荡频率为12MHz,用定时器/计数器0编程实现从P1.0输出周期为500μs的方波。分析:定时时间:从P1.0输出周期为500μs的方波。定时250μs,定时结束对P1.0取反。
模式选择:当系统时钟频率为12MHz,机器周期为1µs,定时器/计数器0可以选择模式0、模式1和模式2。模式2最大的定时时间为256μs,满足250μs的定时要求,选择模式2(1)定时初值计算
(256-X)×1µs=250µs X=6; 则TH0=TL0=6采用中断处理方式的程序:
C语言程序:#include <reg52.h>//包含特殊功能寄存器库
sbit P1_0=P1^0;void main(){ TMOD=0x02; //选择定时器的工作模式
TL0=0x06; TH0=0x06; //为定时器赋初值
ET0=1; //允许定时0中断
EA=1; TR0=1; //启动定时器0 while(1); //等待中断} voidtime0_int(void)interrupt1 { P1_0=~P1_0;} 汇编语言程序:
ORG 0000H LJMP MAIN ORG 000BH ;中断处理程序 CPL P1.0 RETI
ORG 0030H ;主程序
MAIN: MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H
SETB ET0 ;允许定时器0中断
SETB EA ;允许CPU中断 SETB TR0 ;启动定时器0 SJMP $ ;等待中断
END
采用查询方式处理的程序: C语言程序:#include<reg52.h> //特殊功能寄存器库sbit P1_0=P1^0;voidmain(){ TMOD=0x02; TL0=0x06; TH0=0x06;TR0=1;
while(1) { while(!TF0); //查询计数溢出
TF0=0; P1_0=~P1_0; }}
汇编语言程序:MAIN: MOV TMOD,#02H ;主程序
MOV TL0,#06H MOV TH0,#06H SETB TR0LOOP: JNB TF0,$ ;查询计数溢出
CLR TF0 CPL P1.0
SJMP LOOP END
门控位的应用
门控位GATE为1时,TRx=1,INTx=1才能启动定时器。利用这个特性可以测量外部输入脉冲的宽度。例3利用T0门控位测试INT0引脚上出现的正脉冲宽度,已知晶振频率为12MHz,将所测得值最高位存入片内71H单元,低位存入70H单元。解:设外部脉冲由(P3.2)输入,T0工作于定时方式1(16位计数),GATE设为1。测试时,应在INT0低电平时,设置TR0为1(16位计数);当INT0变为高电平时,就启动计数;再次变低时,停止计数。此计数值与机器周期的乘积即为被测正脉冲的宽度。因fosc=12MHZ,机器周期为1us,测试过程如下。源程序如下:
MOVTMOD,#09H;设T0为方式1MOVTL0,#00H;设计初值取最大值
MOVTH0,#00HMOVR0,#70HJBP3.2,$;等P3.2(INT0)变低
SETBTR0;启动T0准备工作
JNBP3.2,$;等待P3.2(INT0)JBP3.2,$;等待P3.2(INT0)CLRTR0;停止计数T0从0开始计数INT0
09H(TMOD)1TR0
0TR0T0停止计数
MOV@R0,TL0;存放结果
INCR0MOV@R0,TH0SJMP$
读者不难编出C语言程序。这种方案被测脉冲的宽度最大为65535个机器周期
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 焦炉三大车设备改进方案
- 2024年度广告发布合同与宣传效果评估协议
- 2024年度餐饮业产品质量保证合同
- 办公室复工复产健康管理制度
- 2024年度废旧物资回收与处理合作合同
- 2024年度专利技术转让及使用权许可合同标的详细描述
- 乡村振兴第一书记工作中的挑战与应对
- 2024年度店铺租金减免合同-因特殊情况减免租金的协议
- 2024年度物业管理服务合同纠纷解决
- 2024年度甲方委托乙方进行市场调研合同
- GB/T 44800-2024太阳能光热发电站储热/传热用工作介质技术要求熔融盐
- 【课件】立体图形与平面图形(2)2024-2025学年人教版数学七年级上册
- 2024-2030年中国银行资产托管业务行业发展模式及投资前景预测报告
- 2024年短视频剪辑制作专业技术及理论知识考试题库与答案
- 直播技巧培训
- 2024年江苏省高考化学试卷(含答案解析)
- 成都银行招聘真题
- 2023年中国铁塔招聘考试真题
- 英文2024 年的全球支付 - 更简单的界面复杂的现实
- 2024-2025学年初中音乐七年级上册(2024)人教版(2024)教学设计合集
- 和平积弊分析检查报告和整改方案
评论
0/150
提交评论