




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章MCS-51单片机定时器/计数器,教学目标第一节MCS51定时/计数器的结构第二节定时/计数器的方式和控制寄存器第三节定时/计数器的工作方式第四节定时/计数器应用第五节定时/计数量程的扩展本章小结思考题与习题,(P288)7.6MCS51内部定时器/计数器,教学目标,通过本章教学,要求达到以下目标:1.了解定时/计数器内部结构及工作原理。2熟悉定时/计数器控制寄存器TCON、工作方式寄存器TMOD的结构、控制作用和设置方法。3理解定时/计数器4种工作方式,重点掌握方式1、方式2的应用。4学会定时/计数器初值的计算方法。5掌握定时/计数器应用程序的编制方法。,在实际的控制系统中常要求有外部实时时钟,以实现定时或延时控制;还要求有外部计数器,以实现对外界事件进行计数。例如:在单片机控制的电力拖动系统中,控制的对象为电动机,为了实现闭环控制,就需要定时地对转速进行采样。若采用光电脉冲发生器作为检测元件,则先应对每个采样周期中光电脉冲发生器发出的脉冲进行计数,然后再通过实时计算求得对应的转速。,对于定时/计数器来说,不管是独立的定时器芯片还是单片机内的定时器,大都有以下特点:(1)定时/计数器有多种工作方式,可以是计数方式也可以是定时方式,其实是一个东西。(2)定时/计数器的计数值是可变的,当然对计数的最大值有一定限制,这取决于计数器的位数。计数的最大值也就限制了定时的最大值。(3)可以按照规定的定时或计数值,在定时时间到或者计数终止时,发出中断申请,以便实现定时控制。,6.1定时/计数器的结构及工作原理,MCS-51单片机的定时/计数器简称T/C,T/C的结构图,加1计数器,P3.5,P3.3,中断申请,启停控制,计数/定时脉冲源,T/C的核心是1个16位加1计数器;它由两个8位的特殊功能寄存器构成:低八位:TL,计满向高八位进位高八位:TH,说明:,加1计数器,加1计数器,16位的加1计数器由两个8位的特殊功能寄存器THx或TLx组成(X=0、1)。它们可被程序设置为不同的组合状态。(13位、16位、两个分开的8位等),从而形成不同的4种工作方式,这只要用指令改变TMOD(工作方式控制寄存器)的相应位即可实现。,加1计数器,加1计数器计满后(13位为213、16位为216、8位为28),向CPU申请中断,标志位TF1自动置位,若中断是开放的,则CPU响应定时器中断。当CPU响应中断转向中断服务程序时,由硬件自动将该位清0。,中断申请,输入脉冲有两个来源:外部脉冲源,对应单片机P3.4、P3.5引脚。系统时钟(振荡器)经12分频以后的脉冲信号。,说明:,加1计数器,P3.5,加1计数器,模拟位开关决定了T/C的工作状态:当开关处于上方时为定时状态,处于下方时为计数状态。工作状态的选择由特殊功能寄存器TMOD的C/T位来决定。,P3.5,计数/定时脉冲源,加1计数器,当T/C处于计数模式时,对P3.4(计数器T0)、P3.5(计数器T1)、输入脉冲进行统计。由特殊功能寄存器TMOD的C/T位来决定。,P3.5,加1计数器,当T/C处于定时方式时,由于一个机器周期包含12个振荡周期所以它的计数速率是振荡频率的1/12。加1计数器在每个机器周期加1。因此,也可以把它看作在累计机器周期。,加1计数器,TR1、GATE、/INT1共同控制定时器的启动。,P3.3,6.2定时/计数器的控制和方式寄存器,MCS-51单片机有2个特殊功能寄存器TCON和TMOD:TCON:用于控制定时器的启动与停止,中断标志。TMOD:用于设置T/C的工作方式。,1.定时器控制寄存器TCON,D7D6D5D4D3D2D1D0,TCON,88H,位地址,外部中断标志和触发方式,0:无Tx中断(硬件复位),1:有Tx溢出中断,0:停Tx计数,1:启Tx计数,TFx:,TRx:,定时器启停和标志,TF0(TF1):为T0(T1)定时器溢出中断标志位。当T0(T1)计数溢出时,由硬件置位,并在允许中断的情况下发出中断请求信号。当CPU响应中断转向中断服务程序时,由硬件自动将该位清0。,TR0(TR1):为T0(T1)运行控制位。该位由软件进行设置。当TR0(TR1)=1时启动T0(T1);TR0(TR1)=0时关闭T0(T1)。,2.定时器工作方式寄存器TMOD,定时器工作方式寄存器TMOD用于选择定时器的工作方式。,C/T0,C/T1,M1M0:T/C工作方式定义位。,89H,GATA:定时/计数器启动控制位。,TMOD,GATE:门控制位,用于控制定时器的启动是否受外部中断源信号的影响(或称外部引脚信号的控制)。GATE=0时,与外部中断无关,由TCON寄存器中的TRx位控制启动。GATE=1时,由控制位TRx和引脚共同控制启动。,6.3定时/计数器的工作方式,TMOD,T/C构成一个13位的计数器,由THx的8位和TLx的低5位组成,TLx的高3位未用,满计数值为213。T/C启动后立即加1计数,当TLx的低5位计数溢出时向THx进位,THx计数溢出则对相应的溢出标志位TFx自动置位,以此作为定时器溢出中断标志。当单片机进入中断服务程序时,由内部硬件自动清除该标志。,1、方式0,M1M0=00,T/C方式0的逻辑结构图,TH1/TH0,TL1/TL0,TL1(5位),计数,构成16位定时/计数器。其中THx作为高8位,TLx作为低8位,满计数值为216,其余同方式0类似。,2、方式1,M1M0=01,T/C方式1的逻辑结构图,TH1/TH0,TL1/TL0,计数,构成1个8位自动重装载的T/C,满计数值为28。在方式0和方式1中,当计数满后,若要进行下一次定时/计数,需用软件向THx和TLx重新予置计数初值。在方式2中THx和TLx被当作两个8位计数器,计数过程中THx寄存8位初值并保持不变,由TLx进行8位计数。计数溢出时,除产生溢出中断请求外,还自动将THx中的初值重新装到TLx中去,即重装载。除此之外,方式2也同方式0类似。,3、方式2,M1M0=10,T/C方式2的逻辑结构图,TH1/TH0,TL1/TL0,计数,寄存器,TH0和TL0被拆成2个独立的8位计数器。TL0既可作为定时器使用,也可作为计数器使用,它占用了定时器T0所使用的控制位(C/T、GATE、TR0、TF0),其功能和操作与方式0或方式1完全相同。TH0只能作定时器用,并且占据了定时器T1的两个控制信号TR1和TF1。,T0和T1有不同的工作方式,C/T0:,定时器T1只能按不需要中断的方式2工作。,C/T1:,4、方式3,M1M0=11,T/C方式3的逻辑结构图,TH1,TL1,计数,TH0,TL0,计数,计数,寄存器,(1)确定工作方式,即对TMOD寄存器进行赋值。(2)计算计数初值,并写入寄存器TH0、TL0或TH1、TL1中。(3)根据需要,置位ETx允许T/C中断。(4)置位EA使CPU开中断(需要时)。(5)置位TRx启动计数。,6.4定时/计数器应用,可编程器件在使用之前需要进行初始化。对定时/计数器而言需:第一要能正确写入控制字;第二能进行计数初值的计算。,一般步骤,定时/计数器的初始化,定时/计数初值的计算方法,计数方式的初值计算,定时方式的初值计算,定时/计数初值的计算方法,计数方式的初值计算:计数器是在计数初值的基础上进行加1计数,并能在计数器从全“1”变为全“0”时自动产生定时溢出中断请求。假设需要的计数值为N,则应装入的计数初值为:,X=MN(M:模数,为216、213、28、N:需要的计数值),定时/计数初值的计算方法,定时方式的初值计算:,在定时方式下,计数脉冲由单片机主脉冲经12分频后得到,因此定时器定时时间为:,M:模数,为216、213、28TC:定时计数初值T计数:计数脉冲周期T:需要的定时时间,fs:晶振频率tcp:机器周期,计数初值:,其中:,设:fs12MHz,初值TC0,则:,方式0时:Tmax2131S8.192mS方式1时:Tmax2161S65.536mS方式2、3时:Tmax281S0.256mS,最大定时时间计算,思考:fs6MHz定时最大时间为多少?8MHz呢?,设:fs6MHz,初值TC0,则:,方式0时:Tmax2132S16.384mS方式1时:Tmax2162S131.072mS方式2、3时:Tmax282S0.512mS,最大定时时间计算,例1,若晶振频率为6MHz,试计算MCS-51单片机定时/计数器的最小定时时间和最大定时时间。,解:先确定机器周期:,TCP12/6=2S,计算最小定时时间:,对于定时器的几种工作方式来说,最小定时时间都是一样的,即仅计一个脉冲便产生溢出,所以Tmin=1Tcp=12s=2s,计算最大定时时间:,当T/C工作在方式1下的定时时间最长,则最大定时时间为:,Tmax=216Tcp=2162s=131072s=131ms,例2:,若单片机的晶振频率为6MHz,要求定时/计数器T0产生100ms的定时,试确定计数初值以及TMOD寄存器的内容。,解:,当晶振频率为6MHz时,在不扩展计数器情况下产生100ms的定时只能采用方式1(16位定时器)。,计数初值:TCMT/T计数,T计数2S,TC216100103/26553650000155363CB0H,方式0时:Tmax2132S16.384mS方式1时:Tmax2162S131.072mS方式2、3时:Tmax282S0.512mS,对于T0来说:M1M0=01、=0、GATE=0。由于T1不用,可任意设置,现取为全0。所以:TMOD=0000,0001B=01H,设置TMOD方式字:,C/T0,C/T1,89H,TMOD,例2:,若单片机的晶振频率为6MHz,要求定时/计数器T0产生100ms的定时,试确定计数初值以及TMOD寄存器的内容。,例3,利用定时/计数器T0通过P1.0引脚输出周期为2ms的方波,设晶振频率为12MHz。试确定计数初值、TMOD内容及编制相应程序。,若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即可,可采用取反指令CPL来实现。为了提高CPU的效率,可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。定时器T0的中断入口地址为000BH。,分析:,计算计数初值:,解:,对于定时1ms来说,用定时器方式0(13位定时器)就可实现。,TC213(110-3)/(110-6)8192100071920001110000011000B=1C18H?,则其高8位为E0H,低5位为18H,故TH0=E0H(高8位),TL0=18H(低5位)。,确定TMOD方式字:,对于定时器T0来说,M1M0=00H、=0、GATE=0。定时器T1不用,取为全0。于是TMOD=00000000B=00H,C/T0,C/T1,TMOD,ORG0000HLJMPMAINORG000BH;T0中断服务程序入口LJMPINT0;转至INT处ORG2000H;主程序MAIN:MOVTMOD,00H;置T0为定时方式0MOVTH0,0E0H;设置计数初值MOVTL0,18HSETBEA;CPU开中断SETBET0;允许T0中断SETBTR0;启动T0HALT:SJMP$;暂停,等待中断INT0:CPLP1.0;输出方波MOVTH0,0E0H;重新装计数初值MOVTL0,18HRETI;中断返回END,程序设计:,机器周期122,特别注意:当采用方式0、1、3时,只要不关闭定时/计数器,那么每当计数器回0溢出时,都需要重新装入计数初值,以保证计数值不变。为了得到精确的定时,重装时要扣去CPU响应中断和执行重装所需要的时间。,CPU响应中断需38个周期(一般按45个估算),本例中重装完定时常数,执行了3条指令,用了5个机器周期,故重装时使计数减去10个机器周期。,INT0:CPLP1.0;输出方波MOVTH0,0E0H;重新装计数初值MOVTL0,22H;22H18H+0AHRETI;中断返回,修改后的中断服务程序为:,例4,分析:程序和例3很相似,不同之处为不需要中断和中断服务程序。查询的对象是定时器T0的溢出标志TF0,在计数过程中,TF0为0;当定时时间到,计数器溢出使TF0置1。由于未采用中断,TF0置1后不会自动复位为0,故需用指令使TF0复位为0。,用查询方式产生例3中所要求的方波。,解:计数初值的计算以及TMOD的选取同例3。TMOD00H;置定时器T0为方式0TH00E0H;设置计数初值TL018H,ORGOOOOHLJMPMAINORGO100HMAIN:MOVTMOD,00H;置定时器T0为方式0MOVTH0,0E0H;设置计数初值MOVTL0,18HMOVIE,00H;禁止中断SETBTR0;启动T0定时LOOP:JBCTF0,LOOP1;查询计数溢出,若跳转同时清TF0SJMPLOOP;TF0=0,则反复查询LOOP1:CPLP1.0;输出方波MOVTH0,0E0H;重新装入计数初值MOVTL0,18HSJMPLOOP;重复循环END,设晶振频率为6MHz、定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,要求TL0使P1.0产生400s的方波,TH0使P1.1产生800s的方波。,例5,解:当采用方式3时,对于TH0来说,需要借用定时器T1的控制信号。,计算计数初值:X0=28-20010-6/210-6=156=9CHX1=28-40010-6/210-6=56=38H确定TMOD方式字:对定时器T0来说,M1M0=11、C/T=0、GATE=0,定时器T1不用,取为全0。则:TMOD=00000011B=03H,设晶振频率为6MHz、定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,要求TL0使P1.0产生400s的方波,TH0使P1.1产生800s的方波。,例5,P1.0,P1.1,ORG0000HLJMPMAINORG0100H;主程序MAIN:MOVTMOD,03H;T0工作于方式3MOVTL0,9CH;置计数初值MOVTH0,38HSETBEA;CPU开中断SETBET0;允许T0中断(用于TL0)SETBET1;允许T1中断(用于TH0)SETBTR0;启动TL0SETBTR1;启动TH0,程序设计:,SETBTR0;启动TL0SETBTR1;启动TH0HALT:SJMPHALT;暂停,等待中断ORG000BH;TL0中断服务程序CPLP1.0;P1.0取反MOVTL0,9CH;重新装入计数初值RETI;中断返回ORG001BH;TH0中断服务程序CPLP1.1;P1.1取反MOVTH0,38H;重新装计数初值RETI;中断返回END,现场应用实例:已知某生产线的传送带上不断地有产品单向传送,产品之间有较大间隔。使用光电开关统计一定时间内的产品个数。假定红灯灭时停止统计,红灯亮时才在上次统计结果的基础上继续统计,试用单片机定时器/计数器T1的方式1完成该项产品的计数任务。设计数值放在30H,31H,32H单元,当GATA1,TR11时,如/INT1=1(红灯亮),则可对T1的输入脉冲进行计数。,例6:,硬件原理图,S合:红灯亮,/INT11,计数S断:红灯灭,/INT10,停止计数,(1)初始化:TMOD=11010000B=0D0H(GATE=1(体现红灯的控制作用),C/T=1,M1M0=01)(2)T1在方式1时,溢出时产生中断、且计数器回零,故在中断服务程序中,设计用R0计数中断次数,以保护累积计数结果。(3)启动T1计数,开T1中断。,TMOD,程序清单如下:,ORG0000HAJMPSTART;复位入口ORG001BHAJMPT1INT;T1中断入口ORG0100HSTART:MOVSP,60H;初始化程序MOVTMOD,0D0HMOVTH1,00H;从0开始计数MOVTL1,00HMOVR0,00H;清中断次数计数单元MOVP3,28H;设置P3.5,P3.3为输入SETBTR1;启动T1,作好计数准备SETBET1;开T1中断SETBEA;开总中断,28H00101000,P3.5=1,P3.3=1,MAIN:ACALLDISP;主程序,调显示子程序MOV30H,R0MOV31H,TH1MOV32H,TL1;计算总数SJMPMAINORG0A00HT1INT:INCR0;中断服务子程序RETIDISP:;显示子程序RETEND,计数值读取,最大计数值?,216*(30H)+28*(31H)+(32H),6.5定时/计数量程的扩展,扩展的方法(N216):硬件扩展:计数器级联。如T0计数满量程后,将Px.x取反,再送入T1端计数即可。软件扩展:T满量程后,在某一个/多个寄存器加1/减1,使最终的计数满足要求。,在P1.7端接一个发光二极管LED,要求利用定时控制使LED亮一秒灭一秒周而复始,设fosc=6MHZ。,例7:,fs6MHz,初值TC0,则:,方式0时:Tmax2132S16.384mS方式1时:Tmax2162S131.072mS方式2、3时:Tmax282S0.512mS,P1.7,57,解:方法1:采用T0产生周期为200ms脉冲,即P1.0每100ms取反一次作为T1的计数脉冲,T1对P1.0下降沿计数,因此T1计5个脉冲正好1000ms。,在P1.7端接一个发光二极管LED,要求利用定时控制使LED亮一秒灭一秒周而复始,设fosc=6MHZ。,T0采用定时,方式1,X0=65536-50000得X0=3CB0H,T1采用计数方式2,计数初值X1=256-5=FBH,例7:,58,59,ORG0000HMAIN:CLRP1.7SETBP1.0MOVTMOD,#61HMOVTH1,#0FBHMOVTL1,#0FBHSETBTR1LOOP1:CPLP1.7LOOP2:MOVTH0,#3CHMOVTL0,#0B0HSETBTR0LOOP3:JBCTF0,LOOP4SJMPLOOP3LOOP4:CPLP1.0JBCTF1,LOOP1AJMPLOOP2END,查询法,60,方法2:T0每隔100ms中断一次,中断10次即实现了1秒的定时。,软件扩展:T满量程后,在某一个/多个寄存器加1/减1,使最终的计数满足要求。,61,ORG0000HLJMPMAINORG000BH;T0中断服务程序入口AJMPIP0ORG0030H;主程序开始MAIN:CLRP1.7;T0定时100msMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBET0SETBEAMOVR4,#0AHSETBTR0SJMP;等待中断IP0:DJNZR4,RET0;中断10次计数未到,返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西师范大学成果转化中心工作人员招聘1人考前自测高频考点模拟试题及答案详解(典优)
- 2025江西南昌医学院招聘模拟试卷及一套完整答案详解
- 2025贵州省妇幼保健院第十三届贵州人才博览会引才1人模拟试卷及答案详解(名校卷)
- 2025内蒙古考试录用特殊职位公务员及调剂模拟试卷附答案详解(典型题)
- 2025河南郑州市第六人民医院招聘高层次人才模拟试卷及答案详解(夺冠)
- 新能源汽车产业变革:2025年氢燃料电池汽车关键零部件国产化推动产业发展报告
- 2025年榆林华源电力有限责任公司招聘(5人)考前自测高频考点模拟试题附答案详解(完整版)
- 2025年佳木斯市汤原县乡镇卫生院公开招聘医学毕业生1人考前自测高频考点模拟试题及答案详解参考
- 协议书栈购买
- 2025贵州习水县官店镇卫生院招聘见习人员考前自测高频考点模拟试题及参考答案详解1套
- 装置性违章培训
- 2025-2030年矿山机械行业市场深度分析及前景趋势与投资研究报告
- 设备泄漏挥发性有机物排放控制技术规范
- 粉体团聚现象控制-洞察及研究
- 《慢性伤口治疗与护理》课件
- 《冠心病合并2型糖尿病患者的血糖管理专家共识(2024版)》解读
- 医疗AI发展中的伦理问题及应对策略
- 车工多选考试题及答案
- 植入式给药装置护理技术(输液港护理团标) 课件
- 支部三会一课记录范文
- 2025《导游业务》高分必会试题库1000题-选择600题
评论
0/150
提交评论