11信息工程学院•广播电视工程系CUC第五章第五章单片机的定时器单片机的定时器//计数器计数器石东新zz第一节第一节定时定时//计数器的结构和功能计数器的结构和功能zz第二节第二节定时器定时器//计数器的工作方式计数器的工作方式zz第三节第三节定时器定时器//计数器应用计数器应用22信息工程学院•广播电视工程系CUC一、定时方法概数述1.软件定时:执行循环程序。特点:a.时间精确,且不需外加硬件电路。b.占用CPU资源,定时时间不宜长,依靠循环程序实现。2.硬件定时:硬件电路完成。特点:a.定时功能全部由硬件电路完在,不占CPU时间。b.元件参数调节定时时间,不够灵活方便。3.可编程定时器定时:对系统时钟脉冲计数实现。通过程序设定计数值,改变计数值,也就改变了定时时间。特点:a.使用起来既灵活又方便。b.与软件定时配合,能够定时较长时间。c.采用计数方法实现定时,因此具有计数功能,可以对外来脉冲进行计数。第一节定时/计数器的结构和功能33信息工程学院•广播电视工程系CUC定时器工作过程:定时模式:定时器实质:•倒计时定时模式:•秒表计时定时模式:•闹钟响铃定时模式:单位时间的计数器(加法器或减法器)。1.设置定时时间;2.启动;3.时间到,响铃。44信息工程学院•广播电视工程系CUC二、定时器/计数器的结构和功能8051单片机内有两个可编程16位定时器/计数器,常称为定时器0和定时器1,简称为T0和T1。都是16位加法计数器的结构,即16位定时器/计数器实质上是一个加法计数器。因此既可作定时器也可作计数器。常用于定时控制、延时、外部计数和检测等。1.结构:外部控制门55信息工程学院•广播电视工程系CUC2.功能:a.定时:对机器周期进行计数,即计数脉冲来自单片机的内部。即每个机器周期产生一个计数脉冲使得计数器加1,直至计满溢出。一个机器周期=?12MHz晶体,计数周期=?。即每?计数器加l。从开始计数到溢出这段时间就是“定时”时间。因此,若机器周期一定,计数初值越大,则定时越?12*振荡周期1us1us短66信息工程学院•广播电视工程系CUCb.计数:对外来脉冲进行计数。T0(P3.4)和T1(P3.5)两个引脚,作为计数输入端。外部输入的脉冲在出现从1到0的负跳变时有效,计数器进行加1。计数方式下,单片机在每个机器周期的S5P2拍节时对外部计数脉冲进行采样。如果前一个机器周期采样为高电平,后一个机器周期采样为低电平,即为一个有效的计数脉冲。在下一机器周期的S3Pl进行计数。即采样计数脉冲是在二个机器周期进行的。因此,计数脉冲的频率不能高于振荡脉冲频率的 1/2477信息工程学院•广播电视工程系CUCTCON8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT01.控制寄存器TCON:(可以进行位寻址)TF1(TCON.7,8FH位)----T1溢出标志位。TF0(TCON.5,8DH位)----T0溢出标志位。TR1(TCON.6,8EH位)----T1运行控制位。0:关闭T1;1:启动T1运行。TR0(TCON.4,8CH位)----T0运行控制位。0:关闭T0;1:启动T0运行。8051设有定/计应用相关的控制器,即两个8位专用寄存器TMOD和TCON。定/计工作前,必须经过由CPU将一些命令写入定/计的初始化过程。三、方式寄存器TMOD和控制寄存器TCON88信息工程学院•广播电视工程系CUC2.方式寄存器TMOD:(不能进行位寻址,没有位地址)GATED7D6D5D4D3D2D1D0C/TM1M0C/TM1M0GATETMODM1M0工作方式功能说明00方式013位计数器01方式116位计数器10方式2自动再装入8位计数器11方式3定时器0:分成两个8位计数器定时器1:停止其它方式计数C/T----定时器/计数器方式选择位。0:定时器;1:计数器。GATE----定时器启动外部门控位0:不用外部门,只将TR0/TR1置1来启动定时器;1:使用外部门,外部请求信号INT0/INT1(高电平)和TR0/TR1(置1)共同来启动定时器。定时计数器1定时计数器099信息工程学院•广播电视工程系CUC 1010信息工程学院•广播电视工程系CUC1、方式0(13位定时/计数器)当M1M0两位为00时,定时/计数器被选为工作方式0,其逻辑结构如图所示。控制振荡器÷12TL0低5位TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0(8位)第二节定时器/计数器的工作方式1111信息工程学院•广播电视工程系CUC在方式0下,计数工作方式时,计数值的范围是:1~8192(213)定时工作方式时,定时时间的计算公式为:(213一计数初值)×晶振周期×12或(213一计数初值)×机器周期若晶振频率为6MHz,1个机器周期为1/6x10-6x12=2μs则昀小定时时间为:昀大定时时间为:[213–0]x2μs=16384μs=16.384ms[213–(213-1)]x2μs=2μs1212信息工程学院•广播电视工程系CUC2、方式1:(16位定时/计数器)当M1M0两位为01时,定时/计数器被选为工作方式1,其逻辑结构如图所示。控制振荡器÷12TL0(8位)TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0(8位)1313信息工程学院•广播电视工程系CUC在方式1下,计数工作方式时,计数值的范围是:1~65536(216)定时工作方式时,定时时间的计算公式为:(216一计数初值)×晶振周期×12或(216一计数初值)×机器周期若晶振频率为6MHz,1个机器周期为1/6x10-6x12=2μs则昀小定时时间为:昀大定时时间为:[216–(216-1)]x2μs=2μs[216–0]x2μs=131072μs=131.072ms1414信息工程学院•广播电视工程系CUC控制振荡器÷12TL0(8位)TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0(8位)重新装入3、方式2(8位定时/计数器,自动重载)当M1M0两位为10时,定时/计数器被选为工作方式2,其逻辑结构如图所示。1515信息工程学院•广播电视工程系CUC在方式2下,计数工作方式时,计数值的范围是:1~256(28)定时工作方式时,定时时间的计算公式为:(28一计数初值)×晶振周期×12或(28一计数初值)×机器周期若晶振频率为6MHz,1个机器周期为1/6x10-6x12=2μs则昀小定时时间为:昀大定时时间为:[28–(28-1)]x2μs=2μs[28–0]x2μs=512μs1616信息工程学院•广播电视工程系CUC控制振荡器÷12TL0(8位)TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0(8位)1/12fosc1/12foscTF1中断1/12foscTR14、方式3(定时器0:分成两个8位计数器;定时器1:停止计数,因为无此方式)当M1M0两位为11时,定时/计数器被选为工作方式3,其逻辑结构如图所示。定时器T0方式3结构定时/计数器只作为定时器1717信息工程学院•广播电视工程系CUC控制振荡器÷12TL1(8位)串行口T1(P3.5)端C/T=0C/T=1TH1(8位)重新装入振荡器÷12TL18/5位T1(P3.5)端C/T=0C/T=1TH1(8位)串行口定时器T0方式3下的T1结构T1方式0或1T1方式2定时器1:此时常作为串口波特率发生器使用!1818信息工程学院•广播电视工程系CUC在方式0下,计数工作方式时,计数值的范围是:1—8192(213)定时工作方式时,定时时间的计算公式为:(213一计数初值)×晶振周期×12或(213一计数初值)×机器周期若晶振频率为6MHz,1个机器周期为1/6x10-6x12=2μs则昀小定时时间为:昀大定时时间为:[213–(213-1)]x2μs=2μs[213–0]x2μs=16384μs=16.384ms第三节定时/计数器应用我们编程时,通常是求计数初值1919信息工程学院•广播电视工程系CUC(1)计算计数初值:[应用举例]设单片机晶振频率Fosc=6MHz,使用定时器1以方式0产生周期为200μs的等宽正方波脉冲,并由P1.0输出。以查询方式完成。欲产生200μs的等宽正方波脉冲,只需在P1.0端以100μs为周期交替输出高低电平即可实现,为此定时时间应为100μs。使用6MHz晶振,则一个机器周期为2μs。方式0为13位计数结构。设待求的计数初值为x,则有:(213—x)×2μs=100μs,求解得:x=8142(D)=1FCEH=1111111001110B=1111111001110B。低5位和高8位分别转换为十六进制数,高8位为FEH,低5位为0EH。其中高8位放入THl,即THl=FEH;低5位放入TLl,即TL1=0EH。(2)TMOD寄存器初始化:为把定时器/计数器1设定为方式0,则MlM0=00;为实现定时功能,应使C/T=0;为实现定时器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存器应初始化为00H。(3)由定时器控制寄存器TCON中的TR1位控制定时的启动和停止:TR1=1启动,TR1=0停止2020信息工程学院•广播电视工程系CUC(4)程序设计MOVTMOD,#00HMOVTH1,#0FEHMOVTL1,#0EHSETBTR1LOOP1:JBCTF1,LOOP2SJMPLOOP1LOOP2:MOVTL1,#0EHMOVTH1,#0FEHCLRTF1CPLP1.0SJMPLOOP12121信息工程学院•广播电视工程系CUC在方式1下,计数工作方式时,计数值的范围是:1—65536(216)定时工作方式时,定时时间的计算公式为:(216一计数初值)×晶振周期×12或(216一计数初值)×机器周期若晶振频率为6MHz,1个机器周期为1/6x10-6x12=2μs则昀小定时时间为:昀大定时时间为:[216–(216-1)]x2μs=2μs[216–0]x2μs=131072μs=131.072ms2222信息工程学院•广播电视工程系CUC[应用举例]设单片机晶振频率Fosc=12MHz,使用定时器0以方式1产生周期为2S的等宽正方波脉冲,并由P1.0输出。以查询方式完成。(1)计算计数初值:设待求的计数初值为x,则:(216—x)×1μs=50000μs,求解得:x=15536D=3CB0H。即TH0=3CH;TL0=B0H。(2)TMOD寄存器初始化:TMOD=00000001B2323信息工程学院•广播电视工程系CUC(3)程序设计ATART:MOVR2,#20MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0LOOP1:JBCTF0,LOOP2SJMPLOOP1LOOP2:MOVTL0,#0B0HMOVTH0,#3CHDJNZR2,LOOP1CPLP1.0MOVR2,#20SJMPLOOP12424信息工程学院•广播电视工程系CUC在方式2下,计数工作方式时,计数值的范围是:1—256(28)定时工作方式时,定时时间的计算公式为:(28一计数初值)×晶振周期×12或(28一计数初值)×机器周期若晶振频率为6MHz,1个机器周期为1/6x10-6x12=2μs则昀小定时时间为:昀大定时时间为:[28–(28-1)]x2μs=2μs[28–0]x2μs=512μs2525信息工程学院•广播电视工程系CUC[应用举例1]使用定时器0以工作方式2产生100μs定时,在P1.0输出周期为200μs的连续方波。已知晶振频率fosc=6MHz。(1)计算计数初值6MHz晶振下,一个机器周期为2μs,以TH0作重装载的预置寄存器,TL0作8位计数器,假设计数初值为x。则:(28—x)×2μs=100μs求解得:X=206D=11001110B=CEH把CEH分别装入TH0和TL0中:TH0=C