《MCS单片机的定时器计数器.pptx》由会员分享,可在线阅读,更多相关《MCS单片机的定时器计数器.pptx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实现定时常用的三种方法:软件定时:占用CPU时间,效率低。用555电路:不可编程。可编程芯片:功能强,需要另外扩展。单片机内部有2个16位的定时/计数器:使用灵活,编程方便。优先选用第1页/共43页6.1 6.1 定时器/计数器结构一.定时器/计数器的结构及工作原理 MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。每个定时器/计数器的基本部件是两个8位的计数器(其中TH1、TL1是T1的计数器,TH0、TL0是T0的计数器)拼装而成。它们是采用加“1”方式工作的。两个特殊功能寄存器(TMOD和TCON)用来对定时器/计数器的工作方式进行选择和控制。80518
2、051单片机的定时器/计数器结构如下图所示。第2页/共43页内部总线工作方式工作方式TH1TL1TH0TL0TCONTMODT1T0微处理器8051单片机定时器/计数器结构示意图u 加加1 1计数器(高计数器(高8 8位、低位、低8 8位)位)u TMODTMOD,工作方式设置;,工作方式设置;u TCONTCON,启动、停止及设置溢出标志,启动、停止及设置溢出标志。第3页/共43页定时功能-计数输入信号是内部时钟脉冲,其计数脉冲来源于晶振时钟输出信号的12分频,即每个机器周期使寄存器的值加1。定时器可看做是对机器周期的计数器。所以,定时计数频率是振荡频率的1/12。计数功能-计数脉冲来自相应
3、的外部输入引脚,T0为,T1为。只要T0或T1的引脚上有一个1到0的负跳变,相应的计数器就加1.在TMOD中,各有一个控制位(CT),分别用于控制定时/计数器T0和T1工作在定时器方式还是计数器方式。第4页/共43页定时模式,对内部机器周期计数 定时时间 t 计数值N x Tcy计数模式,对外部事件脉冲计数 计数脉冲周期要大于2 TcyT0和T1计数器都只能递增计数,当16位计数器的计数值增加到0FFFFH时,再输入1个脉冲就会使计数器的值回零,并发生溢出信号,置相应的标志位(TCON中TF0或TF1置1),向CPU发出中断请求。设定计数次数:计数器的计数量程计数初值。第5页/共43页二.定时
4、器计数器的控制寄存器 与定时器计数器有关的控制寄存器有:1.定时器控制寄存器TCON第6页/共43页TF1:定时器/计数器1(T1)的溢出中断标志位。TF0:定时器/计数器0(T0)的溢出中断标志位。TR1:定时器/计数器1的运行控制位。通过置1或清0来启动或停止T1的计数。TR0:定时器/计数器0的运行控制位。单片机复位后,TCON寄存器的所有位均为0.第7页/共43页2.工作方式控制寄存器TMOD 高4 4位用于定时器1 1,低4 4位用于定时器0 0 M1 M1,M0M0:工作模式选择位。定时器/计数器四种工作模式选择如表6-16-1所示。第8页/共43页第9页/共43页 C/T:定时器
5、方式或计数器方式选择位 C/T=0时,为定时器方式 C/T=1时,为计数器方式 GATE:门控位当GATE=0时,TCON寄存器中的TR0或TR1为1,则可立即启动定时器/计数器;当GATE=1时,不但要TR0或TR1为1,且单片机的INT0或INT1引脚的输入要为高电平,才能启动定时器/计数器。第10页/共43页三.定时器/计数器0 0或1 1的工作方式1.方式013位方式。由TL0的低5位和TH0的8位组成。TL0的5位计数溢出后,TH0的计数加1,直到全部的13位计数值为全1后,下一个计数脉冲的到达将使TF0置位为1,向CPU发出中断请求,同时把计数器变为全“0”。第11页/共43页其定
6、时时间为:(213-初值)机器周期第12页/共43页2.方式116位方式16位计数,由TL0作为低8位、TH0作为高8位;16位计数,由TL1作为低8位、TH1作为高8位。其定时时间为:(216-初值)机器周期第13页/共43页3.3.方式2828位自动装入时间常数方式 TL0作为8位内部计数器,TH0作为重装初值寄存器,在TL0计数溢出置位TF0标志的同时,由硬件控制直接将重装初值装入TL0,开始新一轮的计数,如此不断循环。方式2和方式0、1最大的差别就是计数器的初值是由硬件控制自动装入的。方式0、1一旦计数溢出,就表示计数器已回0,如果要按照原先的初值重新计数,就需要通过软件重装计数器初值
7、。第14页/共43页方式2 2适合于用作较精确的脉冲信号发生器。第15页/共43页4.4.方式3232个8 8位方式仅T0可以工作在方式3,T1处于方式3时停止计数。此时,T0分成2个独立的计数器TL0和TH0,前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。(1)TH0(1)TH0由TR1TR1启动/停止,溢出TF1TF1(2)TL0(2)TL0由TR0TR0启动/停止,溢出TF0TF0(3)TH0(3)TH0只能定时,TL0TL0可以定时/计数,且都是8 8位。第16页/共43页1初始化步骤 MCS-51内部定时器/计数器是可编程的,其工作方式和工作
8、过程均可由MCS-51通过程序对它进行设定和控制。因此,MCS-51在定时器/计数器工作前必须先对它进行初始化。初始化步骤为:(1)根据题目要求先给定时器方式寄存器TMOD送一个方式控制字,以设定定时器/计数器的相应工作方式。(2)根据实际需要给定时器/计数器选送定时器初值或计数器初值,以确定需要定时的时间和需要计数的初值。6.2 6.2 定时器/计数器的初始化第17页/共43页(3)(3)根据需要给中断允许寄存器IEIE选送中断控制字和给中断优先级寄存器IPIP选送中断优先级字,以开放相应中断和设定中断优先级。(若采用中断方式)(4)(4)给定时器控制寄存器TCONTCON送命令字,以启动或
9、禁止定时器/计数器的运行。第18页/共43页 2.计数器初值的计算 定时器/计数器可用软件随时随地启动和关闭,启动时它就自动加1计数,一直计到满,即全为1,若不停止,计数值从全1变为全0,同时将计数溢出位置1并向CPU发出定时器溢出中断申请。对于各种不同的工作模式,最大的定时时间和计数数值不同。这里在使用中就会出现两个问题:一是要产生比定时器最长的定时时间还要短的时间和比计数器最多的计数次数还要少的计数次数;二是要产生比定时器最长的定时时间还要长的时间和比计数器最多的计数次数还要多的计数次数。第19页/共43页 如果计数初值设定为C C,则计数器从初值C C开始作加1 1计数到计满为全1 1所
10、需要的计数值设定为D D,由此便可得到如下的计算通式:C C=M M-D D 式中,M M为计数器量程,该值和计数器工作模式有关。在模式0 0时,M M为2 21313;在模式1 1时,M M为2 21616;在模式2 2和模式3 3时,M M为2 28 8。第20页/共43页3 3定时器初值的计算 在定时器方式下,计数器由单片机脉冲经1212分频后计数。因此,定时器定时时间T T的计算公式为式中,Tc为定时器的初始常数值;T为计数器从初值Tc开始作加1计数到计满为全1所需要的时间;M为计数器量程,和定时器的工作模式有关;fosc是单片机晶体振荡器的频率。第21页/共43页在上式中,若设Tc=
11、0,则定时器定时时间为最大(初值为0,计数从全0到全1,溢出后又为全0)。由于M的值和定时器工作模式有关,因此不同工作模式下定时器的最大定时时间也不一样。例如,若设单片机主脉冲晶体振荡器频率fosc为12MHz,则最大定时时间为模式0 0时:T Tmaxmax=2 213131s1s=8.1928.192msms模式1 1时:T Tmaxmax=2 21616 1s1s=65.53665.536msms模式2 2和3 3时:T Tmaxmax=2 28 8 1s1s=0.2560.256msms第22页/共43页例6-5.用定时器1,方式2实现1s的延时。第23页/共43页第24页/共43页根
12、据13位定时器/计数器特性,先把低5位0CH送TL0,TL0的高三位置零,高8位F0H送至TH0。可用下列指令实现定时器T0初始化。MOV TMOD,#00H ;T0工作于模式0,定时方式MOV TL0,#0CH ;低5位送TL0寄存器MOV TH0,#0F0H ;高8位送TH0寄存器第25页/共43页第26页/共43页第27页/共43页第28页/共43页初始化程序:MOV TMOD,#16H ;T1定时模式1,T0计数模式2MOV TL0,#0FFH ;T0时间常数送TL0MOV TH0,#0FFH ;T0时间常数送TH0MOV TL1,#78H ;T1时间常数(低8位)送TL1MOV TH
13、1,#0ECH ;T1时间常数(高8位)送TH1SETB TR0 ;置TR0为1,允许T0启动计数SETB TR1 ;置TR1为1,允许T1启动计第29页/共43页第30页/共43页第31页/共43页例6-5.用定时器1,方式2实现1s的延时(12MHZ)。解:因方式2 2是8 8位计数器,其最大定时时间为:256*1s=256s256*1s=256s,为实现1s1s的延时,可选择定时时间为250s250s,再循环40004000次。定时时间选定后,可确定计数值为250250,则定时器1 1的初值为:X=M-X=M-计数值=256-250=6=6H=256-250=6=6H。采用定时器1 1,
14、方式2 2工作,因此,TMOD=20HTMOD=20H。第32页/共43页DELAYDELAY:MOV R7MOV R7,#40#40;置25ms25ms计数循环初值 MOV R6MOV R6,#100#100;置250s250s计数循环初值 MOV TMODMOV TMOD,#20H#20H;设定时器1 1为方式2 2 MOV TH1 MOV TH1,#06H#06H;置定时器初值 MOV TL1MOV TL1,#06H#06H SETB TR1 SETB TR1;启动T1T1LP1LP1:JBC TF1JBC TF1,LP2LP2 ;查询计数溢出 SJMP LP1SJMP LP1 ;无溢出
15、则继续计数LP2LP2:DJNZ R6DJNZ R6,LP1LP1;未到25ms25ms继续循环 MOV R6MOV R6,#100#100 DJNZ R7 DJNZ R7,LP1LP1;未到1s1s继续循环 RETRET;返回主程序 第33页/共43页6.3 定时器/计数器的应用 定时器/计数器是单片机的重要组成部分,其工作方式灵活,功能强大,配合中断使用可减轻CPU的负担,减少外围电路。本节通过实例说明定时器/计数器的使用方法。【例6-6】试通过定时器实现方波输出。设时钟频率fosc为12MHz,从输出频率周期为1ms的方波,如图所示。第34页/共43页第35页/共43页第36页/共43页
16、第37页/共43页第38页/共43页第39页/共43页【6-7】.设P1口接有8个LED,编程实现8个LED的跑马灯。系统晶振为12MHZ,跑马灯顺序为依次点亮的LED,并不断循环。要求使用定时器T0的方式1进行定时,每个LED点亮时间为1s.第40页/共43页查询方式:ORG 0000H LJMP MAIN ORG 0050H MAIN:MOV TMOD,#01;令T0定时方式1 MOV TH0,#3CH MOV TL0,#0B0H;定时50ms初值12MHz SETB TR0;启动T0 MOV R7,#20 MOV A,#0FEH MOV P1,A第41页/共43页 LOOP:JNB TF0,M_LOOP;T0没有溢出,就在此循环不止.CLR TF0 MOV TL0,#0B0H MOV TH0,#3CH DJNZ R7,LOOP;溢出20次?MOV R7,#20;才到1s RL A MOV P1,A SJMP LOOP END 第42页/共43页感谢您的观看!第43页/共43页