• 640.00 KB
  • 2022-04-29 14:23:13 发布

最新单片机-第五章2-单片机的定时器计数器课件PPT.ppt

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'单片机-第五章2-单片机的定时器计数器 一、结构和功能8051单片机内有两个可编程16位定时器/计数器,常称为定时器0和定时器1,简称为T0和T1,每个定时计数器都由两个8位专用寄存器组成,T0由TH0,TL0组成,T1由TH1,TL1组成,同时还有TCON,TMOD两个专用寄存器对其进行控制。常用于定时控制、延时、外部计数和检测等。1.结构:外部控制门 2.功能:a.定时:对机器周期进行计数,即计数脉冲来自单片机的内部。即每个机器周期产生一个计数脉冲使得计数器加1,直至计满溢出。一个机器周期=12*振荡周期12MHZ晶体,计数周期(机器周期)=1us。即每1us计数器加l。从开始计数到溢出这段时间就是“定时”时间。因此,若机器周期一定,计数初值越大,则定时越短  1、方式0(T1,T0)当M1M0两位为00时,定时/计数器被选为工作方式0,13位计数器,其逻辑结构如图所示。控制振荡器÷12TL0低5位TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0高8位第二节定时器/计数器的工作方式 在方式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μs 2、方式1(T1,T0)当M1M0两位为01时,定时/计数器被选为工作方式1,16位计数器,其逻辑结构如图所示。控制振荡器÷12TL0(8位)TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0(8位) 在方式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.072ms 控制振荡器÷12TL0(8位)TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0(8位)重新装入3、方式2(T1,T0)当M1M0两位为10时,定时/计数器被选为工作方式2,自动重加载8位计数器,其逻辑结构如图所示。方式0和方式1有个共同的特点,就是计数溢出后计数器全清0,因此,循环定时时就需要反复设定计数器初值,比较麻烦,而方式2具有自动重加载初值的功能,免去很多反复设置初值的工作。 在方式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μs 控制振荡器÷12TL0(8位)TF0中断T0端C/T=0C/T=1+INT0端GATETR0TH0(8位)1/12fosc1/12foscTF1中断1/12foscTR14、方式3(T0)当M1M0两位为11时,定时/计数器被选为工作方式3,只用于定时器0,T0被分成两个独立的8位计数器,其逻辑结构如图所示。定时器T0方式3结构 控制振荡器÷12TL1(8位)串行口T1(P3.5)端C/T=0C/T=1TH1(8位)重新装入振荡器÷12TL1(8/5位)T1(P3.5)端C/T=0C/T=1TH1(8位)串行口定时器T0用作方式3时,T1仍可用于方式0~2结构这时,仅用C/T来切换定时或计数。T1方式0或1T1方式2 在方式0下,计数工作方式时,计数值的范围是:1~8192(213)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第三节定时/计数器应用我们编程时,通常是求计数初值 (1)计算计数初值:例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=00H;为实现定时功能,应使C/T=0;为实现定时器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存器应初始化为00H。由定时器控制寄存器TCON中的TR1位控制定时的启动和停止:TR1=1启动,TR1=0停止 (4)程序设计MOVTMOD,#00HMOVTH1,#0FEHMOVTL1,#0EHSETBTR1LOOP1:JBCTF1,LOOP2SJMPLOOP1LOOP2:MOVTL1,#0EHMOVTH1,#0FEHCLRTF1CPLP1.0SJMPLOOP1 在方式1下,计数工作方式时,计数值的范围是:1~65536(216)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.072ms 例2:设单片机晶振频率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=00000001B (3)程序设计START:MOVR2,#20MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0LOOP1:JBCTF0,LOOP2SJMPLOOP1LOOP2:MOVTL0,#0B0HMOVTH0,#3CHDJNZR2,LOOP1CPLP1.0MOVR2,#20SJMPLOOP1 在方式2下,计数工作方式时,计数值的范围是:1~256(28)28-计数初值=计数的脉冲数定时工作方式时,定时时间的计算公式为:(28一计数初值)×晶振周期×12=定时时间或(28一计数初值)×机器周期=定时时间若晶振频率为6MHz,1个机器周期为1/6x10-6x12=2μs则最小定时时间为:最大定时时间为:[28–(28-1)]x2μs=2μs[28–0]x2μs=512μs 例3:使用定时器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=CEH,TL0=CEHTMOD寄存器初始化(2)定时器/计数器0为工作方式2,MlM0=10;为实现定时功能C/T=0;依题意GATE=0;定时器/计数器1不用,有关位设定为0。综上情况TMOD寄存器的状态应为02H。(3)程序设计(查询方式):MOVTMOD,#02HMOVTH0,#0CEHMOVTL0,#0CEHSETBTR0LOOP:JBCTF0,LOOP1SJMPLOOPLOOP1:CPLP1.0SJMPLOOP 例4:用定时器l以工作方式2计数,每计100次进行累计器加1操作.(1)计算计数初值.28—100=156D=9CHTH1=9CH,TL1=9CHTMOD寄存器初始化:MlM0=10,C/T=1,GATE=0因此TMOD=60H(2)程序设计序设计CLRAMOVTMOD,#60HMOVTH1,#9CHMOVTL1,#9CHSETBTR1DEL:JBCTF1,LOOPSJMPDELLOOP:INCASJMPDEL 例5:(应用两个定时器)设重复周期大于1ms的低频脉冲信号从P3.5引脚(T1)输入。要求P3.5每发生1次负跳变时,P1.0输出1个500μs同步负脉冲,同时P1.1输出1个1ms的同步正脉冲,其波形图如下,设fosc=6MHz。P3.5P1.0P1.11ms500μs1ms计算计数初值:定时器T0定时500us,使用方式2,T1用于计数1个脉冲(每一次负跳变发生一次变化)因此同时使用两个定时计数器,T0:(28-x)×2us=500usx=6D=06HTH0=06H,TL0=06HT1:X=28-1X=255D=0FFHTH1=0FFH,TL1=0FFHT0用于定时C/T=0,方式2M1M0=10,GATE=0T1用于计数C/T=1,方式2M1M0=10,GATE=0TMOD寄存器初始化:TMOD=62H ORG0030HSTART1:MOVTMOD,#62HMOVTH0,#06H;T0,定时500usMOVTL0,#06HMOVTH1,#0FFH;T1,计数一个脉冲MOVTL1,#0FFHSETBP1.0CLRP1.1SETBTR1;启动T1LP1:JBCTF1,NEX1SJMPLP1NEX1:CLRP1.0SETBP1.1SETBTR0;启动T0LP2:JBCTF0,NEX2;定时500usSJMPLP2NEX2:SETBP1.0LP3:JBCTF0,NEX3SJMPLP3NEX3:CLRP1.1;定2次500us共1msCLRTR0;T0停止工作AJMPLP1P3.5P1.0P1.11ms500μs1ms 例6:利用定时器0控制产生周期为2ms和100ms的方波信号,分别由P1.0和P1.1引脚输出,采用中断方式。系统时钟为12MHz。分析:方波为2ms,定时时间为1ms。机器周期为1μs,采用方式0,则计数初值为X=213-1000=7192=1110000011000BTH0=E0H,TL0=18H方波为100ms,定时时间为50ms,可采用50次1ms定时 ORG0000HLJMPBEGINORG000BHLJMPTOINTORG2000HBEGIN:MOVTMOD,#00HMOVTL0,#18HMOVTH0,#0E0HMOVR2,#50SETBEASETBET0SETBPT0SETBTR0HERE:SJMPHERETOINT:MOVTL0,#18HMOVTH0,#0E0HCPLP1.0DJNZR2,RETURNCPLP1.1MOVR2,#50RETURN:RETI 查询方式中断方式LOOP1:JBCTF0,LOOP2SJMPLOOP1HERE:SJMPHEREORG000BHLJMPTOINTSETBEASETBET0SETBPT0SETBTR0SETBTR0TOINT:使用中断方式时:定时器溢出中断请求标志位TF0,TF1,由硬件自动清0。使用查询方式时:定时器溢出中断请求标志位TF0,TF1,由用户软家清0。 单片机专门固化的定时器/计数器的特点:总结1、51子系统有2个计数器、52子系统有3个计数器2、每个计数器都是一个加法计数器。3、每个计数器都可定义为8bit、13bit、16bit等4种工作方式,以方便在不同的环境下使用。4、每个计数器都可以置初值,每来一个脉冲+1。5、每个计数器都可以选择计数源,内部或外部。6、当选择内部振荡源,由于已知频率,所以可以当定时器,计数频率固定为振荡频率的12分频。7、当选择外部脉冲,由于频率未知,可用内部振荡频率去测量,最大计数脉冲为振荡频率的24分频。 ToBeSentToSchoolOrNotThedaybeforeyesterdaywehadameetingabout"tobesenttoschoolornot".Herearesomeoftheresults. Somestudentsthoughtweshouldbesenttoschool.Itwasnotsafebutalsocansaveourtime. However,othersdisagreed.Theythoughtthebestwaytotoschoolisbyschooloronfoot.itwasgoodforourhealthanditdidmakeacontributionto(做贡献)toourenvironment. Inmyopinon,howtogotoschooldependsonhowfarwelivefromtheschool.Ifwelivenearby,wecanjustwalkorrideourbikes.Ontheotherhand,ifwelivefaraway,wehadbettertaketheschoolbusbyourselves.Afterall,parentshavetheirownworktodo.Doyouagreewithme?'