单片机的定时系统优秀PPT.ppt
单片机的定时系统单片机的定时系统第1页,本讲稿共30页 在控制系统中,常常要求有有一些定时控制,如定时输出、在控制系统中,常常要求有有一些定时控制,如定时输出、在控制系统中,常常要求有有一些定时控制,如定时输出、在控制系统中,常常要求有有一些定时控制,如定时输出、定时检测等;也往往要求有计数功能,能对外部事件进行计数。定时检测等;也往往要求有计数功能,能对外部事件进行计数。定时检测等;也往往要求有计数功能,能对外部事件进行计数。定时检测等;也往往要求有计数功能,能对外部事件进行计数。实行定时功能,可用以下方法实行定时功能,可用以下方法实行定时功能,可用以下方法实行定时功能,可用以下方法:1 1 1 1软件定时:让软件定时:让软件定时:让软件定时:让CPUCPUCPUCPU循环执行一段程序。循环执行一段程序。循环执行一段程序。循环执行一段程序。2 2 2 2硬件定时:采用时基电路,外接必要的元器件。硬件定时:采用时基电路,外接必要的元器件。硬件定时:采用时基电路,外接必要的元器件。硬件定时:采用时基电路,外接必要的元器件。3 3 3 3可编程的定时器可编程的定时器可编程的定时器可编程的定时器第2页,本讲稿共30页定时器定时器/计数器的结构计数器的结构 第3页,本讲稿共30页 TLOTLO和和THOTHO组成组成1616位的定时位的定时/计数器计数器T0,TL1T0,TL1和和TH1TH1组成组成1616位的定时位的定时/计数器计数器T1T1。TMODTMOD是是T0T0和和T1T1的工作方式控制寄存器的工作方式控制寄存器,TCONTCON是是T0T0和和T1T1的运行状态控制寄存器。的运行状态控制寄存器。TMODTMOD和和TCONTCON由所编程序控制。由所编程序控制。第4页,本讲稿共30页.定时器定时器/计数器的控制寄存器计数器的控制寄存器 1 1定时器控制寄存器定时器控制寄存器 TCONTCOND7D7D7D7D6D6D6D6D5D5D5D5D4D4D4D4D3D3D3D3D2D2D2D2D1D1D1D1D0D0D0D0TF1TF1TF1TF1TR1TR1TR1TR1TF0TF0TF0TF0TR0TR0TR0TR0IE1IE1IE1IE1IT1IT1IT1IT1IE0IE0IE0IE0IT0IT0IT0IT0中断请求标志中断请求标志触发方式选择触发方式选择启动定时启动定时/计数器计数器0 低电平1 下降沿0 停止1 启动第5页,本讲稿共30页2 2工作方式工作方式控制寄存器控制寄存器 TMODTMOD T1控制T0控制M0M0M1M1C/TC/TGATEGATEM0M0M1M1C/TC/TGATEGATED0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7GATE门控位C/T计数/定时选择M1 M0工作方式选择第6页,本讲稿共30页 M1M1、M0M0:决定定时器的:决定定时器的4 4种工作方式种工作方式方式方式方式方式0 0:(:(:(:(M1=0M1=0、M0=0M0=0):):):):1313位定时位定时位定时位定时/计数器计数器计数器计数器方式方式方式方式1 1:(:(:(:(M1=0M1=0、M0=1M0=1):):):):1616位定时位定时位定时位定时/计数器计数器计数器计数器方式方式方式方式2 2:(:(:(:(M1=1M1=1、M0=0M0=0):):):):8 8位定时位定时位定时位定时/计数器计数器计数器计数器方式方式方式方式3 3:(:(:(:(M1=1M1=1、M0=1M0=1):把):把):把):把T0T0分为两个分为两个分为两个分为两个8 8位计数器位计数器位计数器位计数器 C/TC/T:定时:定时:定时:定时/计数方式选择位计数方式选择位计数方式选择位计数方式选择位C/T=0C/T=0为定时工作方式。此方式下为定时工作方式。此方式下为定时工作方式。此方式下为定时工作方式。此方式下,计数脉冲来自单片机内部。计数脉冲来自单片机内部。计数脉冲来自单片机内部。计数脉冲来自单片机内部。C/T=1C/T=1为计数工作方式。此方式下为计数工作方式。此方式下为计数工作方式。此方式下为计数工作方式。此方式下,计数脉冲来自外部引脚。计数脉冲来自外部引脚。计数脉冲来自外部引脚。计数脉冲来自外部引脚。GATEGATEGATEGATE:计数器工作方式控制位:计数器工作方式控制位:计数器工作方式控制位:计数器工作方式控制位 GATE=0GATE=0时,不受外部控制。时,不受外部控制。时,不受外部控制。时,不受外部控制。GATE=1GATE=1时,时,时,时,T0T0和和和和T1T1分别受分别受分别受分别受P3.2P3.2和和和和P3.3P3.3脚上电平控制。脚上电平控制。脚上电平控制。脚上电平控制。第7页,本讲稿共30页 定时器定时器/计数器启动工作前,计数器启动工作前,CPUCPU先要先要为它设定其工作方式,然后再为它装入定为它设定其工作方式,然后再为它装入定时器时器/计数器初值,并通过指令启动其工作。计数器初值,并通过指令启动其工作。.定时器定时器/计数器的工作方式计数器的工作方式 第8页,本讲稿共30页1.1.方式方式0 0 1313位方式位方式 TF0T0TR0GATEINT011&C/T=1振荡器1/12C/T=0TL0 TH08位低5位13位计数器定时计数第9页,本讲稿共30页 方式方式0下,下,当为计数工作方式时,计数值的范围是:当为计数工作方式时,计数值的范围是:1 181928192(2 21313)当为定时工作方式时,定时时间的计算公式当为定时工作方式时,定时时间的计算公式为为:(2 21313计数初值)计数初值)机器周期机器周期 其时间单位与机器周期相同其时间单位与机器周期相同(ss)第10页,本讲稿共30页2.2.方式方式1 1 1616位方式位方式 振荡器1/12TL0 TH0TF011&T0TR0GATEINT0C/T=0C/T=18位8位1616位计数器位计数器第11页,本讲稿共30页方式方式1 1下,下,当为计数工作方式时,计数值的范围是当为计数工作方式时,计数值的范围是 1 16553665536(2 21616)当为定时工作方式时,定时时间的计算公式当为定时工作方式时,定时时间的计算公式为为 (2 21616计数初值)计数初值)机器周期机器周期 其时间单位与机器周期相同(其时间单位与机器周期相同(ss)第12页,本讲稿共30页3.3.方式方式2-2-自动重新加载方式自动重新加载方式 在方式在方式2 2下,把下,把1616位计数器分为两部分,即以位计数器分为两部分,即以TLTL作计数器,以作计数器,以THTH作预置寄存器。作预置寄存器。CPUCPU对它们初对它们初始化时必须送相同的定时初值始化时必须送相同的定时初值/计数初值。当定时计数初值。当定时器器/计数器启动后,计数器启动后,TLTL按按8 8位加位加1 1计数器计数计数器计数.每当每当它计满回零时,一方面向它计满回零时,一方面向CPUCPU发出溢出中断请求,发出溢出中断请求,另一方面从另一方面从THTH中重新获得初值并启动计数。中重新获得初值并启动计数。定时时间为:定时时间为:t =(28T0初值)初值)机器周期机器周期第13页,本讲稿共30页4.4.方式方式3 3 2 2个个8 8位方式位方式 仅仅T0T0可以工作在方式可以工作在方式3 3。在工作方式在工作方式3 3下,定时器下,定时器/计数器计数器0 0被拆成两被拆成两个独立的个独立的8 8位计数器位计数器TL0TL0和和TH0TH0。其中。其中TL0TL0既可以既可以计数使用,又可以定时使用,定时器计数使用,又可以定时使用,定时器/计数器计数器0 0的各控制位和引脚信号全归它使用。的各控制位和引脚信号全归它使用。第14页,本讲稿共30页.定时器定时器/计数器的应用计数器的应用 初始化:初始化:确定确定确定确定TMOD控制字控制字控制字控制字 编程时将控制字送编程时将控制字送TMODTMOD;计算计数器的计数初值计算计数器的计数初值计算计数器的计数初值计算计数器的计数初值 编程时将计数初值送编程时将计数初值送THiTHi、TLiTLi;开中断(如果使用中断)开中断(如果使用中断)编程实置位编程实置位编程实置位编程实置位EA、ETi ETi;TRiTRi位置位控制定时器的启动和停止。位置位控制定时器的启动和停止。第15页,本讲稿共30页1 1定时时间常数的计算定时时间常数的计算 定时时间定时时间t=t=(MMX X)Tosc 其中其中MM可取值为可取值为可取值为可取值为213、216、28 8,ToscTosc为机器周期。为机器周期。例如:单片机采用例如:单片机采用例如:单片机采用例如:单片机采用12M晶振,定时器工作在方式晶振,定时器工作在方式0 0,定时时间,定时时间,定时时间,定时时间为为为为5ms5ms,那么,那么,那么,那么TH0及及TL0TL0的设置如下:的设置如下:X=8192X=81925000/1=3192=C78H=5000/1=3192=C78H=110001111000TL0TL0取低取低取低取低5位,其余位为位,其余位为位,其余位为位,其余位为TH0TH0,则,则,则,则TH0=63H;TL0=18HTL0=18H。第16页,本讲稿共30页2 2TMODTMOD寄存器初始化寄存器初始化 例如例如例如例如:n n为把定时器为把定时器/计数器计数器0设定为方式设定为方式设定为方式设定为方式0 0,M1M0=00M1M0=00;n n为实现定时功能,则为实现定时功能,则C/T C/T=0;n n定时器定时器/计数器计数器计数器计数器1不用不用.,有关位设定为,有关位设定为,有关位设定为,有关位设定为0 0 3 3由控制寄存器由控制寄存器TCONTCON中的中的TR0/TR1TR0/TR1位控制定时位控制定时的启动和停止,的启动和停止,=1=1启动,启动,=0=0停止。停止。第17页,本讲稿共30页【习题习题1 1】单片机时钟频率为单片机时钟频率为12MHz12MHz,计算定时,计算定时5ms5ms所需的定时所需的定时器初值。器初值。分析:定时器工作在方式分析:定时器工作在方式2 2和方式和方式3 3下时的最大定时时间只有下时的最大定时时间只有0.256ms0.256ms,要获得,要获得5ms5ms的定时时间,必须在方式的定时时间,必须在方式0 0或方式或方式1 1。(1 1)方式)方式0 0第18页,本讲稿共30页【例例1 1】利用单片机的定时器实现利用单片机的定时器实现5ms5ms的定时,软件延时的定时,软件延时1s1s,使发光二极管实现闪烁。,使发光二极管实现闪烁。第19页,本讲稿共30页 ORG ORG 0000H0000H AJMP AJMP MAINMAIN ORG ORG000BH 000BH ;中断服务程序入口;中断服务程序入口;中断服务程序入口;中断服务程序入口 AJMPAJMPIT0IT0 ORG ORG 0030H0030HMAINMAIN:MOVMOV SPSP,#70H#70H MOV MOVTMODTMOD,#00H#00H;令;令;令;令T0T0为方式为方式为方式为方式0 0 MOVMOVIEIE,#82H#82H;打开;打开;打开;打开T0T0中断中断中断中断 MOVMOV R2R2,#0C8H#0C8H SETB SETBP1.0P1.0 MOV TH0MOV TH0,#63H#63H ;装入定时初值;装入定时初值;装入定时初值;装入定时初值 MOV TL0MOV TL0,#18H#18H SETB TR0SETB TR0 MOV R0MOV R0,#14H#14H LOOPLOOP:AJMP LOOP AJMP LOOP ;等待中断;等待中断;等待中断;等待中断第20页,本讲稿共30页IT0IT0:CLRCLRTR0TR0 DJNZDJNZ R2 R2,YAS1 ;YAS1 ;若若若若R2-1R2-1之后不为之后不为之后不为之后不为0,0,则转移则转移则转移则转移 CPLCPLP1.0 P1.0 ;1s1s到,则翻转电平到,则翻转电平到,则翻转电平到,则翻转电平 MOVMOV R2 R2,#0C8H#0C8H YAS1YAS1:MOV TH0MOV TH0,#63H#63H ;重新启动定时器;重新启动定时器;重新启动定时器;重新启动定时器 MOV TL0MOV TL0,#18H#18H SETB TR0 SETB TR0 RETI RETI第21页,本讲稿共30页【例例2】设晶振频率为设晶振频率为6MHz,使用定时器,使用定时器1以以方式方式1产生周期为产生周期为500s的方波脉冲,并由的方波脉冲,并由P1.0 输出。试以中断方式实现。输出。试以中断方式实现。8051P1.0P1.0500s第22页,本讲稿共30页1.TMOD1.TMOD确定确定T1控制T0控制XXXX1000M0M1C/TGATEM0M1C/TGATE控制字10H 要产生要产生500s 500s 的方波脉冲,只需以的方波脉冲,只需以250s250s为间为间隔,交替输出高低电平即可实现。为此,定时间应为隔,交替输出高低电平即可实现。为此,定时间应为250s 250s 。6 6z z晶振,则一个机器周期为晶振,则一个机器周期为2s.2s.设待求计数初值为,则:设待求计数初值为,则:2.2.计算初值计算初值第23页,本讲稿共30页(2 21616X X)210 210-6-6=25010 =25010-6-6 X X2 21616-125=65536-125=65411=(10000H-7DH)-125=65536-125=65411=(10000H-7DH)=11111111111111111000100000110011 0FF83H0FF83H 因此因此,TH1=0FFH,TH1=0FFH,TL1=83HTL1=83H3.3.采用中断方式:打开全局和局部中断。采用中断方式:打开全局和局部中断。4.4.由定时器控制寄存器由定时器控制寄存器TCONTCON中的中的TR1TR1位控制定时器的位控制定时器的启动和停止。启动和停止。TR1TR11 1,启动;,启动;TR1TR10 0,停止。,停止。第24页,本讲稿共30页程序程序:ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 001BH ORG 001BH LJMP INTT1 LJMP INTT1 第25页,本讲稿共30页INTT1INTT1:MOV TH1MOV TH1,#0FFH#0FFH ;重置初值;重置初值 MOV TL1MOV TL1,#83H#83H CPL P1.0 CPL P1.0 ;输出取反;输出取反 RETIRETI ORG 1000HORG 1000HMAINMAIN:MOV TMODMOV TMOD,#10H#10H ;令;令T1T1为方式为方式1 1 MOV TH1 MOV TH1,#0FFH#0FFH ;置初值;置初值 MOV TL1MOV TL1,#83H#83H SETB EA SETB EA ;允许中断;允许中断 SETB ET1SETB ET1 SETB TR1 SETB TR1 ;启动定时;启动定时 SJMP$SJMP$;等待;等待主程序主程序中断处中断处理程序理程序第26页,本讲稿共30页【习题习题2 2】使用定时器使用定时器0 0以工作方式以工作方式2 2产生产生周期为周期为200s200s的方波脉冲的方波脉冲,由,由P1.0输出。输出。已知晶振频率为已知晶振频率为 6MHz。8051P1.0P1.0200s第27页,本讲稿共30页 1 1计算计数初值计算计数初值 6MHz 6MHz晶振下,一个机器周期为晶振下,一个机器周期为2 2,以,以TH0TH0作预置寄存器,作预置寄存器,TL0TL0作作8 8位计数器,假设计数初值为位计数器,假设计数初值为X X,则,则 (2 28X)2 210106=100106 求解得 X=11001110B=0CEH 把把0CEH0CEH分别装入分别装入TH0TH0和和TL0TL0中:中:TH0=0CEH,TL0=0CEH第28页,本讲稿共30页2 2TMOD寄存器初始化寄存器初始化寄存器初始化寄存器初始化n n 定时器定时器定时器定时器/计数器计数器计数器计数器0 0为方式为方式为方式为方式2 2,M1M0=10M1M0=10;n n 定时功能定时功能定时功能定时功能C/C/T T=0=0;n n 为实现定时器为实现定时器为实现定时器为实现定时器/计数器计数器计数器计数器0 0的运行的运行的运行的运行GATE=0GATE=0;n n 定时器定时器定时器定时器/计数器计数器计数器计数器1 1不用,有关位设定为不用,有关位设定为不用,有关位设定为不用,有关位设定为0 0。故故故故,TMOD寄存器的状态应为寄存器的状态应为寄存器的状态应为寄存器的状态应为02H02H。3程序程序第29页,本讲稿共30页 MOV TMOD MOV TMOD,#02H#02H ;置;置;置;置T0T0为方式为方式为方式为方式2 2 MOV MOVTH0 TH0,#0CEH#0CEH;设置初值;设置初值;设置初值;设置初值 MOVMOVTL0 TL0,#0CEH#0CEH SETB SETB EA EA SETB SETB ET0 ET0;允许中断;允许中断;允许中断;允许中断LOOPLOOP:SETBSETBTR0TR0;启动定时;启动定时;启动定时;启动定时HEREHERE:SJMPSJMP$;等待;等待;等待;等待 CLPCLPTF0TF0;计数溢出标志位清;计数溢出标志位清;计数溢出标志位清;计数溢出标志位清0 0 AJMP AJMPLOOPLOOP中断服务程序中断服务程序中断服务程序中断服务程序:INTT1INTT1:CPLCPLP1.0P1.0;翻转电平;翻转电平;翻转电平;翻转电平,以输出方波以输出方波以输出方波以输出方波 RETIRETI第30页,本讲稿共30页