《C单片机的定时计数器实用.pptx》由会员分享,可在线阅读,更多相关《C单片机的定时计数器实用.pptx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、定时定时/计数器工作方式与原计数器工作方式与原理理 定时/计数器是一种应用非常广泛的硬件逻辑电路,本质是“计数器”。第1页/共51页1 1 定时定时:产生一个标准的时间间隔产生一个标准的时间间隔:如20mS,100mS20mS,100mS,10001000mSmS。典型应用:产生一个符合某一要求的脉冲方波。20mS40mS80C51P x.y 输出波形第2页/共51页2 计数:对外部的事件对外部的事件(脉冲脉冲)进行统计。进行统计。外部事件的发生是随机的,单片机可以进行统计。当达到所要求的计数值时,单片机进行相应的操作。80C51T0(T1)端口外部脉冲外部设备第3页/共51页3.定时定时/计
2、数器的逻辑结构及工作原理:计数器的逻辑结构及工作原理:(1 1):如何控制实现定时功能或计数功能?(2 2):何时控制启动计数器?(3 3):如何控制定时/计数的长短?N位增量计数器TFN位初值寄存器系统内部震荡器fosc/12启动控制 TR外部脉冲T0或T1引脚定时/计数控制C/T计数器溢出(置位溢出标志)返回计数脉冲CPC/T=0C/T=180C51单片机定时定时/计数器逻辑计数器逻辑模型第4页/共51页6.1 6.1 定时定时/计数器的控制和状态寄存器计数器的控制和状态寄存器GATEGATEC/TC/TM1M1M0M0GATEGATEC/TC/TM1M1M0M0定时/计数器1定时/计数器
3、01 1 方式控制寄存器方式控制寄存器TMODTMOD (SFRSFR的地址的地址:89H:89H)返回结构图第5页/共51页TL1 TH1震荡器1/12(8位)(低5位)TF1中断启动控制T1 引脚TR1GATEINT1高三位弃用C/T=0C/T=1返回13位加1计数器GATE GATE 门控位门控位GATE=0GATE=0:TR=1,TR=1,计数器开始工作。计数器开始工作。内部启动模式内部启动模式/软件启动模式软件启动模式;GATE=1GATE=1:/INT=TR=1/INT=TR=1时时,计数器开始工作。计数器开始工作。外部控制启动模式外部控制启动模式/硬件启动硬件启动 可用于测量可用
4、于测量 /INT/INT脚上的信号高电平脉冲的宽度。脚上的信号高电平脉冲的宽度。第6页/共51页C/T计数、定时方式选择位:C/T=1时,计数方式。C/T=0时:定时方式。当C/T=0C/T=0时:多路器选择的是系统时钟(fosc/12fosc/12),既定时方式;当C/T=1C/T=1时:多路器选择的是外部(T0T0或T1T1引脚)输入,既计数方式。M1、M0模式选择:确定四种工作模式。M1M1、M0M0工作模式工作模式工作模式工作模式0 00 0模式模式模式模式0 0(1313位)位)位)位)0 10 1模式模式模式模式1 1(1616位)位)位)位)1 01 0模式模式模式模式2 2(8
5、 8位自动重装)位自动重装)位自动重装)位自动重装)1 11 1模式模式模式模式3 3(8 8位)位)位)位)第7页/共51页TF0定时器T0的溢出标志:当计数器发生溢出时硬件自动置位,TF0=1。如果中断是开放的,则可以引发中断,进入中断子程序前由硬件自动将TF清零);TR0计数器T0的启动/停止控制位:由软件设定:TR0=1计数器开始工作;TR0=0计数器停止计数。TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT02 2 运行控制寄存器运行控制寄存器TCON(SFRTCON(SFR地址地址:88H):88H)返回返回前一次第8页/共51页6.2
6、 6.2 定时定时/计数器的四种工作模式计数器的四种工作模式模式0:13位计数器模式模式1:16位计数器模式模式2:8位自动重装初值模式模式3:拆分/组合扩展8位模式第9页/共51页1 1 模式模式0:0:1313位计数器模式。位计数器模式。13位计数器。在初值的基础上加1计数,溢出时,使TF1=1TF1=1。GATE=0时,TR1=1开始定时/计数;GATE=1时(门控方式),TR=1且/INT1=1时,开始工作。此种方式主要用于测量加在/INT1脚上正脉冲的脉宽.返回TL1 TH1震荡器1/12(8位)(低5位)TF1中断启动控制T1 引脚TR1GATEINT1高三位弃用C/T=0C/T=
7、113位加1计数器第10页/共51页2,2,模式模式1:1:1616位计数器模式位计数器模式(以以T1T1为例为例).).注:计数器在每个机器周期采样一次从T1引脚进入的外部计数脉冲,由于检测到一次从高到低的负跳变需要两个机器周期,所以外部计数脉冲的频率应小于fosc/24fosc/24TL1TH1震荡器1/12(8位)(8位)TF1中断启动控制T1 引脚TR1GATEINT1C/T=0C/T=116位加1计数器第11页/共51页对外部输入信号的要求,图中,对外部输入信号的要求,图中,Tcy为机器周期。为机器周期。12对外部计数输入信号的要求第12页/共51页由TL1做计数器,TH1做初值寄存
8、器,工作前TL1,TH1分别预置相同的初值TL1计数时,当产生溢出置位TF1的同时,将TH1中的初值自动重装入TL1。TL1继续计数,此模式主要用于做串行口波特率发生器。TL1(8位)TH1(8位)震荡器1/12TF1中断控制T1 引脚TR1GATEINT1C/T=1C/T=03,3,模式模式2 2 :8 8位自动重装初值模式位自动重装初值模式返回8位加1计数器8位初值寄存器第13页/共51页单片机将T0和T1重新进行“拆分、组合”。T0变为由TH0,TL0组成的两个独立的8位定时/计数器。4,4,模式模式3 3 拆分拆分/组合扩展模式组合扩展模式TL0震荡器1/12TF0中断控制T0 引脚T
9、R0GATEINT0C/T=0C/T=1TH0TF1中断控制TR1Fosc/12模式3定时器T0的结构图第14页/共51页模式3时T0(TH0,TL0)及T1的各自特点:1TH0计数脉冲来自内部fosc,所以它只能处于”定时”方式;2TH0分别借用了定时器T1的TR1和TF1为自己服务,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出标志;3由于T1缺少了启动控制信号TR1和溢出中断标志TF1,那么在模式3时,T1是如何启动和工作?没有溢出标志TF1,则T1就不用中断方式工作(连查询也不行);没有启动控制信号TR1,可以让它在模式3之前就开始工作,并且让它事先设定为自动重装
10、模式.T1事先设定为模式2(串行口的波特率发生器)并启动起来。返回结构图返回第15页/共51页在模式在模式3 3时时T0,T1T0,T1的电路结构图的电路结构图TL0八位定时/计数器TH0八位定时器T1(TL1,TH1)自动重装模式TF0TF1T0分解为两个计数器TL0和TH0,其中TH0借用了T1的TR1和TF1T1已无TR1,TF1功能,建议T1做波特率发生器TH0,TL0和T1三个计数器返回结构图返回第16页/共51页定时定时/计数器计数器4 4种模式定时长度比较种模式定时长度比较模模 式式计数模计数模M M 最大计数长度(单位:机器周期)最大计数长度(单位:机器周期)模式模式0 013
11、13位位T max=213=8192模式模式1 11616位位T max=216=65536模式模式2 2,3 38 8位位T max=28=256模模 式式计数模计数模M M 最大定时时间最大定时时间 T TMAX MAX (fosc=12MHzfosc=12MHz)模式模式0 01313位位T max=213*1=8.192ms模式模式1 11616位位T max=216*1=65.536ms模式模式2 2、3 38 8位位T max=28*1=0.256ms返回第17页/共51页6.3 6.3 定时器定时器/计数器的编程和应用计数器的编程和应用【例例6-16-1】假设系统时钟频率采用假设
12、系统时钟频率采用6MHz6MHz,在在P1.0P1.0引脚上引脚上输出一个输出一个周期为周期为2ms2ms的的方波方波,如,如图图6-136-13所示。所示。18图6-13 P1.0引脚上输出周期为2ms的方波第18页/共51页基本思想:方波的高、低电平持续时间由T0T0定时确定,T0T0每隔1ms1ms计数溢出1 1次。定时器溢出标志着已设定的定时时间到,CPUCPU可通过两种方式处理:中断、查询1 1 中断方式T0T0每隔1ms1ms产生一次溢出,引发T0T0溢出中断;CPUCPU响应中断后,在T0T0溢出中断服务子程序中对P1.0P1.0取反。19第19页/共51页产生方波信号(产生方波
13、信号(中断方式中断方式)主程序流程图设置TMOD设置计数器初值启动计数开中断中断处理子程序流程图重装计数器初值RETI口线求反第20页/共51页(1)主程序设计)主程序设计初始化指令段初始化指令段采用定时器中中断断方方式式工作。包括定时器初始化和中断系统初始化,主要是对寄寄存存器器IP、IE、TCON、TMOD的相应位进行正确的设置,并将计数初值送入定时器中。其他工作程序其他工作程序任意指令段,本例中任意指令段,本例中用一条转至自身的短跳转指令来代替。(2)中断服务子程序设计)中断服务子程序设计中断服务子程序除了完成所要求的产生方波产生方波的工作之外,还要注意将计数初值重新装入定时器初值重新装
14、入定时器。21第21页/共51页(3 3)计算计数初值X X设T0T0采用工作模式1 1机器周期=2=2 s=2s=2 1010 6 6s s设需要装入T0T0的初值为X X,则有:(2(21616 X X)2 2 1010 6 6=1=1 1010 3 3,X X=65036=65036。X X化为十六进制数,即:65036=FE0CH65036=FE0CH。T0T0的初值为TH0=FEHTH0=FEH,TL0=0CHTL0=0CH。第22页/共51页计算定时器初值的一般公式其中,初值为X,定时器宽度为N,定时长度为Tx第23页/共51页参考程序如下:参考程序如下:ORG0000H;主程序入
15、口RESET:AJMPMAIN;转真正主程序入口ORG000BH;T0中断入口AJMPIT0P;转T0中断处理程序IT0PORG0100H;真正主程序入口MAIN:MOVSP,#60H;设堆栈指针 ACALLPT0M0;调用初始化子程序PT0M0HERE:AJMPHERE;原地循环,等待中断24第24页/共51页PT0M0:MOVTMOD,#01H;T0初始化,设置T0为方式1、定时MOVTL0,#0CH;装初值的低8位MOVTH0,#0FEH;装初值的高8位SETBET0;允许T0中断SETBEA;总中断允许SETBTR0;启动T0RETIT0P:MOVTL0,#0CH;中断子程序,T0重装
16、初值MOVTH0,#0FEHCPLP1.0;P1.0的状态取反RETI25第25页/共51页程序说明:程序说明:当单片机复位时,从程序入口0000H跳向主程序MAIN处执行。其中调用了T0初始化子程序PT0M0。PT0M0子程序返回后,程序执行程序执行“AJMPHERE”指令,指令,则循环等待。则循环等待。当T0定时溢出定时溢出时,则跳向T0中断入口,再从T0中断入口跳向IT0P标号处执行T0中断服务子程序。当执行完中断返回的指令执行完中断返回的指令“RETI”后,又返回断点处继续执行循环指令“AJMPHERE”。26第26页/共51页2 2 产生方波信号(产生方波信号(查询方式查询方式)设置
17、TMOD设置计数器初值启动计数TF=1?YESNOTF=0重装计数器初值口线求反第27页/共51页查询方式参考程序:查询方式参考程序:MOVTMOD,#01H;设置T0为方式1MOVTH0,#0FEH;T0置初值MOVTL0,#0CHSETBTR0;启动T0计数LOOP:JBCTF0,NEXT;查TF0,;若TF0=1,清除TF0,转NEXTSJMPLOOP;若TF0=0,循环等待CPLP1.0;P1.0的状态求反MOVTH0,#0FEH;T0置初值MOVTL0,#0CHSJMPLOOP第28页/共51页【例例6-2】门控位GATE1可使T1的启动计数受的控制,当GATE1=1,TR1=1时,
18、时,只有只有引引脚输入高电平时脚输入高电平时,T1才被允许计数才被允许计数。可测量引脚(P3.3)上正脉冲的宽度。29门控制位GATEx的应用测量脉冲宽度P3.380C51第29页/共51页利用GATE位测量正脉冲的宽度第30页/共51页参考程序:ORG0000HRESET:AJMPMAIN;复位入口转主程序ORG0100H;主程序入口MAIN:MOV SP,#60HMOVTMOD,#90H;向TMOD写控制字,T1为方;式1定时,GATE1=1MOVTL1,#00HMOV TH1,#00HLOOP0:JB P3.3,LOOP0;等待低SETBTR1;如为低,启动T131第31页/共51页LO
19、OP1:JNBP3.3,LOOP1;等待升高LOOP2:JBP3.3,LOOP2;为高,此时计数器计数,;等待降低CLRTR1;停止T1计数MOV A,TL1;T1计数值送AMOV B,TH1;END执行以上程序,测得引脚上出现的正脉冲宽正脉冲宽度度以机器周期为单位。机器周期为单位。32第32页/共51页日时钟的设计日时钟的设计-定时器应用定时器应用1实现日时钟的基本思想实现日时钟的基本思想最小计时单位是秒秒,如何获得1s的定时时间的定时时间?从定时/计数器4种模式定时长度比较知,时钟频率采用6MHz,定时器方式方式1,最大定时时间也只能131ms。可将定时器的定时时间定为100ms,中断方式
20、进行溢出次数的累计,计满计满10次次,即得秒计时。而计数10次可用循环程序的方法实现。第33页/共51页片内RAM规定3个单元个单元为秒、分、时秒、分、时单元:42H:“秒秒”单元;41H:“分分”单元;40H:“时时”单元从秒到分,从分到时从秒到分,从分到时是通过软件累加通过软件累加并比较来实现:每满1秒,则“秒”单元42H中的内容加1;“秒”单元满60,则“分”单元41H中的内容加1;“分”单元满60,则“时”单元40H中的内容加1;“时”单元满24,则将42H、41H、40H的内容全部清“0”。34第34页/共51页2程序设计程序设计(1)主程序设计)主程序设计进行定时器T0初始化,并启
21、动T0,然后反复调用显示子程序,等待100ms中断到来。(2)中断服务程序的设计)中断服务程序的设计实现秒、分、时秒、分、时的计时处理。35第35页/共51页36时钟主程序流程第36页/共51页37图6-18 中断服务程序流程第37页/共51页参考程序:参考程序:ORG0000HAJMP MAIN;上电,跳向主程序ORG 000BH;T0的中断入口AJMP IT0PORG1000HMAIN:MOV TMOD,#01H;设T0为方式1MOV 20H,#0AH;装入中断次数CLRAMOV 40H,A;“时”单元清“0”MOV 41H,A;“分”单元清“0”MOV 42H,A;“秒”单元清“0”38
22、第38页/共51页SETBET0;允许T0申请中断SETBEA;总中断允许MOV TH0,#3CH;给T0装入计数初值MOV TL0,#0B0HSETBTR0;启动T0HERE:SJMPHERE;等中断(也可调用显示子程序)IT0P:PUSHPSW;T0中断子程序入口,保护现场PUSHAccMOV TH0,#3CH;重新装入初值MOV TL0,#0B0HDJNZ20H,RETURN;1秒时时间未到,返回MOV 20H,#0AH;重置中断次数MOV A,#01H;“秒”单元增139第39页/共51页ADD A,42HDAA;“秒”单元十进制调整MOV 42H,A;“秒”的BCD码存回“秒”单元C
23、JNE A,#60H,RETURN;是否到60秒,未到则返回MOV 42H,#00H;计满60秒,“秒”单元清“0”MOV A,#01H;“分”单元增1ADD A,41HDAA;“分”单元十进制调整MOV 41H,A;“分”的BCD码存回“分”单元CJNE A,#60H,RETURN;是否到60分,未到则返回40第40页/共51页MOV 41H,#00H;计满60分,“分”单元清“0”MOV A,#01H;“时”单元增1ADD A,40HDAA;“时”单元十进制调整MOV 40H,ACJNE A,#24H,RETURN;是否到24小时,未;到则返回MOV 40H,#00H;到24小时,“时”单
24、元清“0”RETURN:POP Acc;恢复现场POP PSWRETI;中断返回END41第41页/共51页AT89C52 Timer 2 Timer 2 consists of two 8-bit registers,TH2 and TL2.Timer 2 is a 16-bit Timer/Counter that can operate as either a timer or an event counter.The type of operation is selected by bit C/T2 in the SFR T2CON(shown in Table 5-2).Timer
25、2 has three operating modes:capture,auto-reload(up or down counting),and baud rate generator.The modes are selected by bits in T2CON,as shown in Table 10-1.第42页/共51页第43页/共51页1 Capture ModeEXEN2=0,Timer 2 is a 16-bit timer or counter which upon overflow sets bit TF2 in T2CON.EXEN2=1,Timer 2 performs
26、the same operation;a 1-to-0 transition at external input T2EX also causes the current value in TH2 and TL2 to be captured into RCAP2H and RCAP2L,respectively.In addition,the transition at T2EX causes bit EXF2 in T2CON to be set.The EXF2 bit,like TF2,can generate an interrupt;第44页/共51页CaptureMode第45页
27、/共51页2 Auto-reload(Up or Down Counter)uEXEN2=0,Timer 2 counts up to 0FFFFH and then sets the TF2 bit upon overflow.The overflow causes the timer registers to be reloaded with the 16-bit value in RCAP2H and RCAP2L.The values in RCAP2H and RCAP2L are preset by software.uEXEN2=1,a 16-bit reload can be
28、triggered either by an overflow or by a 1-to-0 transition at external input T2EX.This transition also sets the EXF2 bit.Both the TF2 and EXF2 bits can generate an interrupt if enabled.第46页/共51页Auto-reload第47页/共51页3 Baud Rate Generator 第48页/共51页T2T2做串口方式1 1或3 3波特率发生器时初值与波特率的关系T2 溢出周期:T2 溢出率:串口方式1或3时的波特率:第49页/共51页T1T1做串口方式1 1或3 3波特率发生器时初值与波特率的关系T1 溢出周期:T1 溢出率:串口方式1或3时的波特率:串口串口方式1或3波特率波特率:第50页/共51页感谢您的欣赏!第51页/共51页