定时计数器及其应用优秀PPT.ppt
定时计数器及其应用你现在浏览的是第一页,共68页 定时定时/计数器是单片机系统一个重要的部件,计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用其工作方式灵活、编程简单、使用方便,可用来实现来实现定时控制定时控制、延时延时、频率测量频率测量、脉宽测量脉宽测量、信号发生信号发生、信号检测信号检测等。此外,定时等。此外,定时/计数器还可计数器还可作为串行通信中波特率发生器。作为串行通信中波特率发生器。80C5180C51定时定时/计数器计数器你现在浏览的是第二页,共68页 在工业检测、控制中,很多场合都要用到计数或者定时功能。例如对外部脉冲进行计数、产生精确的定时时间、作串行口的波特率发声器等。MCS51单片机内部有两个可编程的定时器/计数器,以满足这方面的需要。它们具有 两种工作模数(计数器模式、定时器模式)和四种工作方式(方式0、方式1、方式2、方式3),其控制字均在相应的特殊功能寄存器(SFR)中,通过对它的SFR的编程,可以方便的选择工作模数和工作方式。你现在浏览的是第三页,共68页 定时器/计数器:Timer/Counter 本质上都是加法计数器,当对固定周期的脉冲信号计数时是定时器,对脉冲长度不确定的信号计数时是计数器。每接收到一个计数脉冲,加法计数器的值就加一,当计满时发生溢出,并从0开始继续计数。加法计数器的计满溢出信号就是定时/计数器的输出,该信号使TCON的某位(TF0或TF1位)置一,作为定时器/计数器的溢出中断标志。你现在浏览的是第四页,共68页1 1定时定时/计数器的结构计数器的结构6.1 6.1 定时器的结构及工作原理定时器的结构及工作原理内部总线内部总线工作工作方式方式工作工作方式方式THTH 1 1TLTL 1 1TH TH 0 0TL TL 0 0 TCONTCONTMODTMODT T 1(P3.5)1(P3.5)T T 0(P3.4)0(P3.4)微微处处理理器器定时器定时器:对片内机器时钟对片内机器时钟(周期方波周期方波)进行计数进行计数计数器计数器:对对TxTx引脚引脚输入的负脉冲进行计数输入的负脉冲进行计数你现在浏览的是第五页,共68页80C5180C51单片机内部有单片机内部有两个定时两个定时/计数器计数器T0T0和和T1T1,其核心,其核心是计数器,基本功能是是计数器,基本功能是加加1 1。对外部事件脉冲(对外部事件脉冲(下降沿下降沿)计数,是计数器;对片)计数,是计数器;对片内内机周脉冲计数机周脉冲计数,是定时器。,是定时器。计数器由计数器由二个二个8 8位计数器位计数器组成。组成。定时时间和计数值可以编程设定,其方法是在计数器定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后内设置一个初值,然后加加1 1计满后溢出计满后溢出。调整计数器调整计数器初值,可调整从初值,可调整从初值初值到到计满溢出计满溢出的数值,即调整了定的数值,即调整了定时时间和计数值。时时间和计数值。定时定时/计数器作为计数器时,外部事件脉冲必须从规计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高频率不能超过时定的引脚输入。且外部脉冲的最高频率不能超过时钟频率的钟频率的1/241/24。2.2.定时定时/计数器概述计数器概述你现在浏览的是第六页,共68页定时器计数器的功能:定时和计数。定时器计数器的功能:定时和计数。1计数功能计数功能计数:对外部事件进行计数计数:对外部事件进行计数。外外部部事事件件的的发发生生以以输输入入脉脉冲冲表表示示,因因此此计计数数功功能能的的实实质质就就是是对外来脉冲进行计数。对外来脉冲进行计数。计数输入端:计数输入端:T0(P3.4)和)和T1(P3.5)。)。外外部部输输入入的的脉脉冲冲在在负负跳跳变变时时有有效效,进进行行计计数数器器加加1(加加法法计计数)。数)。你现在浏览的是第七页,共68页你现在浏览的是第八页,共68页2定时功能定时功能实现方法:通过计数器的计数实现。实现方法:通过计数器的计数实现。与与计计数数功功能能的的不不同同之之处处:计计数数脉脉冲冲来来自自单单片片机机的的内内部部,即即每每个个机机器器周周期期产产生生一一个个计计数数脉脉冲冲,也也就就是是每每个个机机器器周周期期计计数数器器加加1。一个机器周期一个机器周期=12个振荡周期,个振荡周期,故,计数频率为振荡频率的故,计数频率为振荡频率的1/12。若:单片机晶振若:单片机晶振6MHz,则计数频率为则计数频率为0.5MHz,2微秒计数器加微秒计数器加1.你现在浏览的是第九页,共68页定时器工作方式的特点:定时器工作方式的特点:当定时器当定时器设置了设置了某种工作方式之后,定时器就会按设定的工作某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用方式独立运行,不再占用CPU的操作时间的操作时间,除非定时器计满溢出,除非定时器计满溢出,才可能中断才可能中断CPU当前操作当前操作。因此,因此,定时器定时器/计数器是一种可编程部件。计数器是一种可编程部件。编程:编程:在定时器在定时器/计数器开始工作之前,计数器开始工作之前,CPU必须将一些命令必须将一些命令(称为控制字)写入定时器(称为控制字)写入定时器/计数器,决定计数器,决定T0、T1的工作方式。的工作方式。你现在浏览的是第十页,共68页将将控控制制字字写写入入定定时时器器/计计数数器器的的过过程程叫叫定定时时器器/计计数数器器的的初初始化始化。初始化内容:初始化内容:规定规定T0、T1的工作方式;的工作方式;将工作方式控制字写入方式寄存器将工作方式控制字写入方式寄存器规定规定T0、T1的工作状态;的工作状态;将工作状态控制字写入控制寄存器将工作状态控制字写入控制寄存器赋定时赋定时/计数初值计数初值。你现在浏览的是第十一页,共68页高高4 4位控制位控制T1T1低低4 4位控制位控制T0T0门控门控位位计数计数/定时定时方式选择方式选择工作方式工作方式选择选择门控门控位位计数计数/定时定时方式选择方式选择工作方式工作方式选择选择G GC/TC/TM1M1M0M0G GC/TC/TM1M1M0M0TMODTMOD用于设定定时用于设定定时/计数器的工作方式计数器的工作方式低低4 4位位用于控制用于控制T0T0,高高4 4位位用于控制用于控制T1T1。1.1.工作方式控制寄存器工作方式控制寄存器TMODTMOD M1M0 M1M0 工作方式选择位工作方式选择位M1M0M1M0工作方式工作方式功能功能0000方式方式0 01313位计数器位计数器,TH,TH高位和高位和TLTL低位低位0101方式方式1 11616位计数器位计数器1010方式方式2 2两个两个8 8位计数器,初值自动装入位计数器,初值自动装入1111方式方式3 3两个两个8 8位计数器,仅适用位计数器,仅适用T0T06.2 6.2 定时器的控制定时器的控制你现在浏览的是第十二页,共68页 C/T C/T 计数计数/定时方式选择位定时方式选择位 C/T=1,C/T=1,计数计数工作方式工作方式,对外部事件脉冲计数对外部事件脉冲计数,用作计数器。用作计数器。C/T=0,C/T=0,定时定时工作方式工作方式,对片内机周脉冲计数对片内机周脉冲计数,用作定时器。用作定时器。GATE GATE 门控位门控位 GATE=0GATE=0,运行只受,运行只受TCONTCON中运行控制位中运行控制位TR0/TR1TR0/TR1的控制。的控制。GATE=1GATE=1,运行同时受,运行同时受TR0/TR1TR0/TR1和外中断输入信号和外中断输入信号的双重控制。的双重控制。只有当只有当INT0/INT1=1INT0/INT1=1且且TR0/TR1=1,T0/T1TR0/TR1=1,T0/T1才能运行。才能运行。TMODTMOD字节地址字节地址89H,89H,不能位操作不能位操作,设置设置TMODTMOD须用字节操作指令。须用字节操作指令。你现在浏览的是第十三页,共68页设设 定时器定时器1为定时工作方式,要求由软件启动定时器为定时工作方式,要求由软件启动定时器1,按方式按方式2工作。定时器工作。定时器0为计数方式,要求由软件启动定时器为计数方式,要求由软件启动定时器0,按方式,按方式1工作。工作。MOV TMOD,#25H。位序号位序号 D7D6D5D4 D3D2D1D0位符号位符号GATE 0C/T0M10M00GATE0C/T1M10M01你现在浏览的是第十四页,共68页TCONTCON低低4 4位与外中断位与外中断 、有关,已在有关,已在中断中叙述。中断中叙述。高高4 4位与定时位与定时/计数器计数器T0T0、T1T1有关。有关。TF1:TF1:定时定时/计数器计数器T1T1溢出标志。溢出标志。TF0:TF0:定时定时/计数器计数器T0T0溢出标志。溢出标志。TR1:TR1:定时定时/计数器计数器T1T1运行控制位。运行控制位。TR1=1,T1TR1=1,T1运行运行;TR1=0,T1;TR1=0,T1停。停。TR0:TR0:定时定时/计数器计数器T0T0运行控制位。运行控制位。TR0=1,T0TR0=1,T0运行运行;TR0=0,T0;TR0=0,T0停。停。TCONTCON的字节地址为的字节地址为88H88H,每一位有位地址,均可位操作。,每一位有位地址,均可位操作。2.2.控制控制寄存器寄存器TCONTCONTCONTCONT1T1中断中断标志标志T1T1运行运行标志标志T0T0中断中断标志标志T0T0运行运行标志标志INT1INT1中断中断标志标志INT1INT1触发触发方式方式INT0INT0中断中断标志标志INT0INT0触发触发方式方式位名称位名称TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H你现在浏览的是第十五页,共68页6.3定时器定时器/计数器的四种工作方式计数器的四种工作方式四种工作方式四种工作方式:即方式即方式0、方式、方式1、方式、方式2和方式和方式3。其中其中:方式方式0、1和和2下,下,T0和和T1的工作方式相同,的工作方式相同,方式方式3下,两个定时器的工作方式不同。下,两个定时器的工作方式不同。6.3.1方式方式013位计数结构的工作方式。位计数结构的工作方式。图图6-2是定时器是定时器/计数器计数器0在工作方式在工作方式0下的逻辑结构。下的逻辑结构。T1的结构和操作与的结构和操作与T0完全相同。完全相同。你现在浏览的是第十六页,共68页计数脉冲输入定时器计数器共有四种工作方式 1.方式013位方式 TF0T0TR0GATEINT011&C/T=1振荡器1/12C/T=0TL0 TH08位低5位13位计数器定时器计数器你现在浏览的是第十七页,共68页定时时间的计算公式为:定时时间的计算公式为:T=(MT0初值)振荡周期 12(或TC=MT/T0)其中:其中:T定时器的定时时间,即设计任务要求的定时时间;M计数器的模值;T0定时器需要预置的初值。若设初值T0=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式工作方式0 0:Tmax=2131s=8.192ms工作方式工作方式1 1:Tmax=2161s=65.536ms工作方式工作方式2 2和和3 3:Tmax=281s=0.256ms你现在浏览的是第十八页,共68页当当GATE0时,时,若若TR0=1,接接通通计计数数控控制制K,启启动动T0在在原原计计数数值值上上加加1计数,直至溢出。计数,直至溢出。若若TR00,则关断控制开关,停止计数。,则关断控制开关,停止计数。当当GATE1,且,且TR01时,时,或或门门、与与门门全全部部打打开开,外外信信号号电电平平通通过过引引脚脚直接开启或关断定时器计数。直接开启或关断定时器计数。输入输入1电平时,允许计数,否则停止计数。电平时,允许计数,否则停止计数。你现在浏览的是第十九页,共68页由于定时器由于定时器/计数器以加计数器以加1方式计数,方式计数,当定时器当定时器/计数器用于计数工作方式时,假定要求的计数长度为计数器用于计数工作方式时,假定要求的计数长度为N,则,则应装入定时器应装入定时器/计数器的初值计数器的初值X213N。在方式在方式0下,计数的长度范围为下,计数的长度范围为18192。你现在浏览的是第二十页,共68页当当工工作作于于定定时时状状态态时时,由由于于定定时时器器/计计数数器器是是计计数数内内部部的的机机器器周周期期,每每个个机机器器周周期期包包括括12个个振振荡荡周周期期,若若晶晶振振频频率率为为6MHz,则:则:机器周期机器周期Tp12/晶振频率晶振频率12/(6106)2us若需要的定时时间若需要的定时时间:Tc,则需要的机器周期数则需要的机器周期数NTc/Tp。则应装入定时器则应装入定时器/计数器的初值计数器的初值X213N。若若晶晶振振频频率率为为6MHz,则则当当X8191时时,具具有有最最小小的的定定时时时时间间为为2us;当当X0时,具有最大的定时时间为时,具有最大的定时时间为16384us。你现在浏览的是第二十一页,共68页其中其中:N:N与工作方式有关与工作方式有关:方式方式0 0时时,N=N=1313;方式方式1 1时时,N=N=1616;方式方式2 2、3 3时时,N=N=8 8。机周时间与主振频率有关机周时间与主振频率有关:机周时间机周时间=12/fosc=12/fosc fosc=fosc=12MHZ12MHZ时时,1 1机周机周=1 1 S S;fosc=fosc=6MHZ6MHZ 时时,1 1机周机周=2 2 S S。80C5180C51定时定时/计数初值计算公式:计数初值计算公式:你现在浏览的是第二十二页,共68页解:解:工作方式工作方式0 0:2 21313500500 S/2S/2 S=8192-250=7942=1F06HS=8192-250=7942=1F06H 1F06H 1F06H化成二进制:化成二进制:1F06H=0001 1111 0000 1F06H=0001 1111 0000 0110B0110B=000 =000 1111100011111000 0011000110 B B其中:其中:低低5 5位位0011000110前添加前添加3 3位位000000送入送入TL0TL0 TL0=000 TL0=000 0011000110B=06HB=06H;高高8 8位位11111000B11111000B送入送入TH0TH0 TH0=TH0=1111100011111000B=F8HB=F8H。【例例】已知晶振已知晶振6MHz6MHz,要求定时,要求定时0.5ms0.5ms,试分别求出,试分别求出T0T0工作于方式工作于方式0 0、方式、方式1 1、方式、方式2 2、方式、方式3 3时的定时初值。时的定时初值。你现在浏览的是第二十三页,共68页 工作方式工作方式1 1:T0T0初值初值 =2=21616-500-500 s s/2/2 s s=65536250=65286=FF06H=65536250=65286=FF06H TH0=FFH TH0=FFH;TL0=06HTL0=06H。工作方式工作方式2 2:T0T0初值初值 =2=28 8-500-500 s s/2/2 s s=256-250=6=256-250=6 TH0=06H TH0=06H;TL0=06HTL0=06H。工作方式工作方式3 3:T0T0方式方式3 3时,被拆成两个时,被拆成两个8 8位定时器,定时初值可分别计位定时器,定时初值可分别计算,计算方法同方式算,计算方法同方式2 2。两个定时初值一个装入。两个定时初值一个装入TL0TL0,另一个,另一个装入装入TH0TH0。因此:。因此:TH0=06HTH0=06H;TL0=06HTL0=06H。从上例中看到,从上例中看到,方式方式0 0时计算定时时计算定时初值比较麻烦初值比较麻烦,根据公式,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式计算出数值后,还要变换一下,容易出错,不如直接用方式1 1,且方式,且方式0 0计数范围比方式计数范围比方式1 1小,小,方式方式0 0完全可以用方式完全可以用方式1 1代替,方代替,方式式0 0与方式与方式1 1相比,无任何优点相比,无任何优点。你现在浏览的是第二十四页,共68页6.3.2方式方式1计数器由计数器由TH8位和位和TL8位构成。位构成。当当定定时时器器/计计数数器器用用于于计计数数工工作作方方式式时时,假假定定要要求求的的计计数数长长度度为为N,则应装入定时器则应装入定时器/计数器的初计数器的初值值X216N。在方式在方式0下,计数的长度范围为下,计数的长度范围为165536。当当工工作作于于定定时时状状态态时时,若若需需要要的的定定时时时时间间为为Tc,则则需需要要的的机机器器周周期期数数NTc/Tp(Tp机机器器周周期期),则则应应装装入入定定时时器器/计计数数器器的的初初值值X216N。若若晶晶振振频频率率为为6MHz,则则当当X65535时时,具具有有最最小小的的定定时时时时间间为为2us;当当N65536时,具有最大的定时时间为时,具有最大的定时时间为131072us131ms。你现在浏览的是第二十五页,共68页图图6-3T0(或(或T1)方式)方式1结构结构16位计数器位计数器你现在浏览的是第二十六页,共68页例例:设设单单片片机机晶晶振振频频率率fosc6MHz,使使用用定定时时器器1以以方方式式1产产生生周周期期为为500us的等宽正方波脉冲,并由的等宽正方波脉冲,并由P1.7输出。以中断方式完成。输出。以中断方式完成。(1)计算计数初值)计算计数初值设待求的计数初值为设待求的计数初值为X,则:,则:(216X)2us250us得:得:X65411FFA1H,则:则:TH1FFH,TL1A1H。(2)TMOD寄存器初始化寄存器初始化你现在浏览的是第二十七页,共68页位序号位序号 D7D6D5D4 D3D2D1D0位符号位符号GATEC/TM1M0GATEC/TM1M000100000M1M010,C/T0,GATE0所以:所以:TMOD10H你现在浏览的是第二十八页,共68页(3)程序清单:)程序清单:ORG 0000HAJMP MAINORG 001BHAJMP TIMER1ORG 1000HMAIN:MOVTMOD,#10H;设置;设置T1工作方式工作方式1MOV TH1,#0FFH;设置计数初值;设置计数初值MOV TL1,#A1H;SETBEA;开中断;开中断你现在浏览的是第二十九页,共68页SETBET1;定时器;定时器1允许中断允许中断LOOP:SETB TR1;定时开始;定时开始HERE:SJMP$;等待中断;等待中断TIMER1:MOVTH1,#0FFH;T1中断服务程序中断服务程序;重新设置计数初值;重新设置计数初值MOVTL1,#A1H;CPLP1.7RETIEND;程序结束;程序结束你现在浏览的是第三十页,共68页6.3.3.方式方式2方式方式2具有自动重新加载功能,即自动加载计数初值。具有自动重新加载功能,即自动加载计数初值。在该工作方式下,把在该工作方式下,把16位计数器分为两部分,即位计数器分为两部分,即以以TL作计数器作计数器,以以TH作作预预置置寄寄存存器器,初初始始化化时时把把计计数数初初值值分分别别装装入入TL和和TH中。中。当当计计数数溢溢出出时时,由由预预置置寄寄存存器器TH以以硬硬件件方方法法自自动动给给计计数数器器TL重重新加载,继续计数,循环重复。新加载,继续计数,循环重复。你现在浏览的是第三十一页,共68页当当定定时时器器/计计数数器器用用于于计计数数工工作作方方式式时时,假假定定要要求求的的计计数数长长度度为为N,则应装入定时器,则应装入定时器/计数器的初值计数器的初值X28N。在方式在方式0下,计数的长度范围为下,计数的长度范围为1256。当当工工作作于于定定时时状状态态时时,若若需需要要的的定定时时时时间间为为Tc,则则需需要要的的机机器器周周期期数数NTc/Tp,(Tp为为机机器器周周期期),则则应应装装入入定定时时器器/计计数数器器的初值的初值X28N。若晶振频率为若晶振频率为6MHz,则当,则当X255时,具有最小的定时时间为时,具有最小的定时时间为2us;当;当X0时,具有最大的定时时间为时,具有最大的定时时间为512us。你现在浏览的是第三十二页,共68页图图6-4T0(或(或T1)方式)方式2结构结构8位计数器位计数器你现在浏览的是第三十三页,共68页例例:有有一一自自动动罐罐装装药药粒粒系系统统,每每瓶瓶罐罐装装药药粒粒100片片,每每满满一一瓶瓶,累累加加器器A加加1操操作作,若若满满200瓶瓶,向向P1.0输输出出0,然然后后停停止止计计数数。要要求求用用定时器定时器1以工作方式以工作方式2计数计数。(1)计算计数初值)计算计数初值设待求的计数初值为设待求的计数初值为X,则:,则:(28X)100得:得:X15638H,则:则:TH138H,TL138H。(2)TMOD寄存器初始化寄存器初始化你现在浏览的是第三十四页,共68页M1M010,1,GATE0因此:因此:TMOD60H(3)程序清单:)程序清单:ORG1000HMOV TMOD,#60H;设置;设置T1工作方式工作方式MOVTH1,#38H;设置计数初值;设置计数初值MOVTL1,#38H位序号位序号 D7D6D5D4 D3D2D1D0位符号位符号GATEC/TM1M0GATEC/TM1M001100000你现在浏览的是第三十五页,共68页MOVA,#00HMOVIE,#00H;禁止中断;禁止中断SETB TR1;启动计数;启动计数CHECK:JBCTF1,LOOP;查询计数溢出;查询计数溢出AJMPCHECKLOOP:INCACJNE A,#200,CHECKCLRP1.0;清零;清零P1.0CLRTR1;停止计数器;停止计数器1的运行的运行END;程序结束;程序结束你现在浏览的是第三十六页,共68页6.3.4方式方式3前前三三种种工工作作方方式式下下,T0和和T1的的设设置置和和使使用用是是完完全全相相同同的的。但但是是在在工工作方式作方式3下,二者的设置和使用却是不同的,因此要分开介绍。下,二者的设置和使用却是不同的,因此要分开介绍。(1)在工作方式在工作方式3下,下,T0被拆成两个独立的被拆成两个独立的8位计数器位计数器TL0和和TH0。其中其中TL0既可以作计数使用,又可以作定时使用。既可以作计数使用,又可以作定时使用。T0的各控制位、引脚和中断源,即、的各控制位、引脚和中断源,即、GATE、TR0、TF0和和T0(P3.4)引脚、)引脚、(P3.2)引脚全归它使用。)引脚全归它使用。功能和操作与方式功能和操作与方式1完全相同,而且逻辑电路结构也很相似,完全相同,而且逻辑电路结构也很相似,如图如图6-5所示。所示。你现在浏览的是第三十七页,共68页图图6-5T0工作方式工作方式3逻辑结构逻辑结构你现在浏览的是第三十八页,共68页而而此此时时TH0只只可可用用作作简简单单的的定定时时器器使使用用。而而且且由由于于T0的的控控制制位位已已被被TL0独独占占,因因此此只只好好借借用用定定时时器器/计计数数器器1的的控控制制位位TR1和和TF1,即即以以计计数数溢溢出出去去置置位位TF1,而而定定时时的的启启动动和和停停止止则则受受TR1的状态控制。的状态控制。由于由于TL0既能作定时器使用也能作计数器使用,而既能作定时器使用也能作计数器使用,而TH0只能作只能作定时器使用,却不能作计数器使用。因此,在工作方式定时器使用,却不能作计数器使用。因此,在工作方式3下,定时下,定时器器/计数器计数器0可以构成两个定时器或一个定时器和一个计数器。可以构成两个定时器或一个定时器和一个计数器。你现在浏览的是第三十九页,共68页(2)工作方式)工作方式3下的定时器下的定时器/计数器计数器1如如果果T0已已工工作作在在工工作作方方式式3,则则T1只只能能工工作作在在方方式式0、1或或方方式式2下下,因因为为它它的的运运行行控控制制位位TR1及及计计数数溢溢出出标标志志位位TF1已已被被T0借借用用,如如图图6-6所示。所示。你现在浏览的是第四十页,共68页此此时时,T1通通常常是是作作为为串串行行口口的的波波特特率率发发生生器器使使用用,以以确确定定串串行行通通信信的的速速率率。因因为为已已经经没没有有计计数数溢溢出出标标志志位位TF1可可供供使使用用,因因此此只只能能把把计计数数溢溢出出直直接接送送给给串串行行口口。若若将将T1强强行行设设置置为为模模式式3,就会使,就会使T1立即停止工作。立即停止工作。你现在浏览的是第四十一页,共68页例例设设定定时时器器/计计数数器器T0工工作作于于方方式式3,TL0和和TH0作作为为两两个个独独立立的的8位位定定时时/计计数数器器分分别别产产生生250us和和500us的的定定时时中中断断,使使P1.1和和P1.2产产生生500us和和1000us的方波。的方波。设晶振频率为设晶振频率为6MHz。(1)计算计数初值)计算计数初值TL0的计数初值的计数初值256250us/2us=13183HTH0的计数初值的计数初值256500us/2us=06H因此,因此,TL083H,TH006H。(2)TMOD寄存器初始化寄存器初始化你现在浏览的是第四十二页,共68页M1M011,0,GATE0,同时设同时设T1工作于方式工作于方式0因此:因此:TMOD03H位序号位序号 D7D6D5D4 D3D2D1D0位符号位符号GATEC/TM1M0GATEC/TM1M000000011你现在浏览的是第四十三页,共68页(3)程序清单:)程序清单:ORG0000HAJMPMAINORG000BH;T0AJMP TIMER0ORG001BH;T1AJMP TIMER1ORG1000HMAIN:MOV TMOD,#03HMOVTL0,#83H MOVTH0,#06H你现在浏览的是第四十四页,共68页SETB TR0;启动定时器运行;启动定时器运行SETB TR1SETB ET0;允许定时;允许定时/计数器中断计数器中断SETB ET1SETB EA;总中断允许;总中断允许SJMP$;等待中断;等待中断TIMER0:MOVTL0,#83HCPLP1.1RETITIMER1:MOV TH0,#06HCPLP1.2RETIEND你现在浏览的是第四十五页,共68页 定时定时/计数器应用步骤计数器应用步骤 合理选择定时合理选择定时/计数器计数器工作方式工作方式 计算定时计算定时/计数器定时计数器定时初值初值(按上述公式计算按上述公式计算)编制应用程序编制应用程序 定时定时/计数器的初始化计数器的初始化 包括定义包括定义TMODTMOD、写入定时初值、设置中断系统、启、写入定时初值、设置中断系统、启动定时动定时/计数器运行等。计数器运行等。正确编制定时正确编制定时/计数器中断服务程序计数器中断服务程序 注意注意是否需要重装是否需要重装定时初值,若需要连续反复使定时初值,若需要连续反复使用原定时时间,且未工作在方式用原定时时间,且未工作在方式2 2,则应在中断服务,则应在中断服务程序中重装定时初值。程序中重装定时初值。你现在浏览的是第四十六页,共68页【例例】试试用用T1T1方方式式2 2编编制制程程序序,在在P1.0P1.0引引脚脚输输出出周周期期为为400400 S S的脉冲方波,已知的脉冲方波,已知fosc=12MHZfosc=12MHZ。解:解:计算定时初值计算定时初值 T1T1初值初值=2=28 8-200-200 s s/1/1 s s=256200=56=38H=256200=56=38H TH1=38H TH1=38H;TL1=38HTL1=38H 设置设置TMODTMOD:0 0 0 0 1010 00000000 B=20H B=20H T0 T0控制位,与控制位,与T1T1无关无关 T1T1方式方式2 2 T1 T1定时器定时器 T1T1启动与启动与 无关无关你现在浏览的是第四十七页,共68页 编制程序编制程序如下:如下:ORGORG0000H0000H ;复位地址复位地址LJMPLJMPMAINMAIN ;转主程序转主程序ORGORG001BH001BH ;T1;T1中断入口地址中断入口地址LJMPLJMPIT1IT1 ;转转T1T1中断服务程序中断服务程序 ORGORG0100H0100H ;主程序首地址主程序首地址MAIN:MAIN:MOVMOVTMOD,#20HTMOD,#20H ;置置T1T1定时器方式定时器方式2 2MOVMOVTL1,#38HTL1,#38H ;置定时初值置定时初值MOVMOVTH1,#38HTH1,#38H ;置定时初值备份置定时初值备份MOVMOVIP,#00001000BIP,#00001000B;置置T1T1高优先级高优先级MOVMOVIE,#0FFHIE,#0FFH ;全部开中全部开中SETBSETBTR1TR1 ;T1;T1运行运行SJMPSJMP$;等待等待T1T1中断中断 ORG 0200HORG 0200H ;T1;T1中断服务程序首地址中断服务程序首地址IT1:IT1:CPL P1.0 CPL P1.0 ;输出波形取反首地址输出波形取反首地址RETI RETI ;中断返回中断返回你现在浏览的是第四十八页,共68页【课堂练习题课堂练习题】参参照照以以上上例例题题工工作作方方式式2 2,按按下下列列要要求求分分别别修改程序:修改程序:脉冲方波从脉冲方波从P3.0P3.0输出;输出;fosc=6MHzfosc=6MHz;脉冲方波脉宽为脉冲方波脉宽为100100 s s;用定时用定时/计数器计数器T0T0;你现在浏览的是第四十九页,共68页【例例】已知晶振已知晶振12MHZ12MHZ,参阅图,参阅图5-15,5-15,要求利用定时器要求利用定时器T0T0使图中发光二极管使图中发光二极管D D进行秒闪烁。进行秒闪烁。解:发光二极管进行秒解:发光二极管进行秒闪烁。即一秒钟一亮一闪烁。即一秒钟一亮一暗,亮暗,亮500ms500ms,暗,暗500 ms500 ms。晶振晶振12MHz12MHz,每机周,每机周1 1 s s,T0T0方式方式1 1最大定时只能最大定时只能65ms65ms余。余。取取T0T0定时定时50ms50ms,计,计数数1010次,即可实现次,即可实现500ms500ms定时。定时。你现在浏览的是第五十页,共68页计算定时初值计算定时初值 T0T0初值初值 =216-50000=216-50000 s s/1/1 s s =6553650000=15536=3CB0H =6553650000=15536=3CB0H TH0=3CH TH0=3CH;TL0=B0HTL0=B0H。设置设置TMODTMOD:00000000 0 0 0 0 0101 B=01H B=01H T0 T0方式方式1 1 T0T0 与与 无关无关 T1T1控制位控制位你现在浏览的是第五十一页,共68页 编制程序编制程序如下:如下:ORGORG 0000H 0000H ;复位地址复位地址LJMPLJMP MAIN MAIN ;转主程序转主程序ORGORG 000BH 000BH ;T0T0中断入口地址中断入口地址LJMPLJMP IT0 IT0 ;转转T0T0中断服务程序中断服务程序ORGORG 0100H 0100H ;主程序首地址主程序首地址MAIN:MOV MAIN:MOV TMOD,#01H TMOD,#01H ;置置T0T0定时器方式定时器方式1 1MOVMOV TH0,#3CH TH0,#3CH ;置置T0T0初值初值50ms50msMOVMOV TL0,#0B0H TL0,#0B0H ;MOVMOV IE,#10000010B IE,#10000010B;T0;T0开中开中 MOVMOV R7,#0AH R7,#0AH ;置置50ms50ms计数器初值计数器初值 SETBSETB TR0 TR0 ;T0;T0运行运行SJMPSJMP$;等待中断等待中断 ORG 0200HORG 0200HITOITO:MOV TH0MOV TH0,#3CH#3CH ;重置;重置T0T0初值初值50ms50ms MOV TLO MOV TLO,#0BOH#0BOH DJNZ R7DJNZ R7,GORETGORET ;判;判500ms500ms到否到否?CPL P1.7 CPL P1.7 ;500ms500ms到,输出取反到,输出取反 MOV R7MOV R7,#0AH#0AH ;恢复;恢复50ms50ms计数器初值计数器初值GORETGORET:RETIRETI 你现在浏览的是第五十二页,共68页【例例】已知已知fosc=6MHzfosc=6MHz,检测,检测T0T0引脚上的脉冲数,并引脚上的脉冲数,并将将1s1s内的脉冲数显示在显示屏上,每隔内的脉冲数显示在显示屏上,每隔1s1s刷新一次显示刷新一次显示值值(设一秒内脉冲数设一秒内脉冲数6553565535个个)。根据题目要求,根据题目要求,T0T0用作计数器方式用作计数器方式1 1,T1T1用作定时器方用作定时器方式式1 1,定时,定时100ms100ms。你现在浏览的是第五十三页,共68页3)3)编制程序如下:编制程序如下:ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ;转主程序;转主程序 0RG 000BH0RG 000BH LJMP IT0 LJMP IT0 ;转;转T0T0中断服务程序中断服务程序 ORG 001BHORG 001BH LJMP ITl LJMP ITl ;转;转T1T1中断服务程序中断服务程序 ORG 0100HORG 0100H MAIN MAIN:MOV SPMOV SP,#60H#60H ;置堆栈;置堆栈 MOV TMODMOV TMOD,#15H#15H ;置;置T0T0计数器方式计数器方式1,T11,T1定时器方式定时器方式1 1 MOV TH0 MOV TH0,#00H#00H ;置;置T0T0初值初值 MOV TL0MOV TL0,#00H#00H ;MOV TH1,#3CH MOV TH1,#3CH ;置;置T1T1初值初值 MOV TL1MOV TL1,#0BOH#0BOH ;SETB PT1 SETB PT1 ;置;置T1T1为高优先级为高优先级 MOV IEMOV IE,#10001101B#10001101B ;TOTO、串口不开中,其余开中、串口不开中,其余开中 SETB TR0 SETB TR0 ;TOTO启动启动 SETB TRl SETB TRl ;T1T1启动启动 MOV R7MOV R7,#OAH#OAH ;置;置lOOmslOOms计数器初值计数器初值LDIR:LCALL DIR LDIR:LCALL DIR ;调用显示子程序,并等待中断;调用显示子程序,并等待中断 SJMP LDIR SJMP LDIR ;循环显示;循环显示T0T0中断服务程序没有编中断服务程序没有编写写.你现在浏览的是第五十四页,共68页 ORG 0200H ORG 0200H ;T1T1中断服务程序首地址中断服务程序首地址ITlITl:MOV THlMOV THl,#3CH#3CH ;重置;重置T1T1初值初值 MOV TL1MOV TL1,#0BOH#0BOH ;DJNZ R7DJNZ R7,GORET GORET ;判;判1s1s到否到否?1s?1s未到转返回未到转返回 CLR TR0 CLR TR0 ;1s1s到,到,T0T0停停 MOV 30