第6章-MCS51定时器和计数器.ppt_第1页
第6章-MCS51定时器和计数器.ppt_第2页
第6章-MCS51定时器和计数器.ppt_第3页
第6章-MCS51定时器和计数器.ppt_第4页
第6章-MCS51定时器和计数器.ppt_第5页
免费预览已结束,剩余47页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2个16位定时器/计数器(52系列有3个16位Timer)定时器:对片内机器时钟(周期方波)进行计数计数器:对Tx引脚输入的负脉冲进行计数,与Timer工作有关的特殊功能寄存器:TMON和TCON,第6章MCS-51的定时器/计数器P.118,一.定时器方式寄存器TMOD(89H)P.119,1.M1,M0:工作方式定义位(定义4种方式):,2.C/T:计数器/定时器选择位=1外部事件计数器。对Tx引脚的负脉冲计数;=0片内时钟定时器。对机器周期脉冲计数定时,00:13位Timer用处不大01:16位Timer经常用到10:可自动重装的8位Timer经常用到11:T0分为2个8位Timer;T1此时不工作因为没有带来甚麽好处,几乎无用,GATEC/TM1M0GATEC/TM1M0,T1,T0,3.GATE门控位:Timer可由软件与硬件两者控制(1)GATE=0普通用法Timer的启/停由软件对TRx位写“1”/“0”控制,一.定时器方式寄存器TMOD(续),(89H),(2)GATE=1门控用法Timer的启/停由软件对TRx位写“1”/“0”和在INTx引脚上出现的信号的高/低共同控制,(3)TFx:Timer0/1计数溢出标志位。=1计数溢出;=0计数未满TFx标志位可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。,(4)TRx:Timer0/1运行控制位。=1启动计数;=0停止计数,二.定时器控制寄存器TCON(88H)P.120,3.TR0/TR1:Timer0/1运行控制位:TR0/TR1=0时,Timer0/1停止计数TR0/TR1=1时,Timer0/1启动计数,三.定时器T0/T1中断申请过程,2.在已经开放T0/T1中断允许且已被启动的前提下:(1)T0/T1加满溢出时TF0/TF1标志位自动置“1”(2)检测到TCON中TF0/TF1变“1”后,将产生指令:LCALL000BH/LCALL001BH执行中断服务程序,(3)TF0/TF1标志位会自动清“0”,以备下次中断申请。,1.定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,阅读书上定时器应用程序举例:,P.125例6-1:晶振=6MHz,P1.0输出周期为2ms方波。P.127例6-2:要求T0产生1s定时(晶振=6MHz)P.128例6-3:T0(P3.4)发生负跳变,从P1.0输出周期为1ms的方波。(方式2)P.130例6-4:将例6-1改为方式2,计数100P.133例:实时时钟设计P.135例:运行中读定时器/计数器,四.定时器结构与工作方式P.120,1.工作方式1:16位的定时/计数器,GATE的状态决定了定时器/计数器的启动是取决于TRx一个条件还是TRx与INTx两个条件。,THx/TLx赋初值:THx赋高8位,TLx赋低8位,(1)工作方式1的编程要点:,TMOD选方式:写“M1,M0”=01B选方式1,若不用门控位,直接用软件写TRx控制启/停若使用门控位,先置位TRx,然后由INTx端的高/低电平来控制其启/停,若要允许中断,还须先置位ETx、EA等中断允许控制位,并编写中断服务程序若不用中断,可查询“计数溢出标志TFx”的方式工作,但溢出标志TFx须软件清0,中断法,查询法,(2)定时器(方式1)应用程序举例:,分析:定时器定时时间的计算公式为:T=(M-N)Tm;51单片机的C/T属于加1计数。M模值,与定时器/计数器工作方式有关N计数初值Tm机器周期T定时时间,P125例6-1:若晶振频率为6MHz,要在P1.0输出周期为2ms的方波。,即:NMT/Tm,(2)定时器(方式1)应用程序举例:,分析:已知fosc=6MHz则:(振荡周期)1Tc=1/6MHz(机器周期)1Tm=12Tc=12/6MHz=2s方波周期T=2ms,则定时时间为1ms。计数脉冲值=1ms/2us=500所以计数初值X=216-500=65036即X=FE0CH,TH0=FEH,TL0=0CH,P125例6-1:若晶振频率为6MHz,要在P1.0输出周期为2ms的方波。,GATEC/TM1M0GATEC/TM1M0,定时器方式寄存器TMOD,T0选择方式1,初值=FE0CH,XXXX0001,初始化:MOVTMOD,#01H;选T0方式1MOVTH0,#0FEH;赋初值高8位MOVTL0,#0CH;赋初值低8位SETBTR0;启动T0定时若需要定时器0产生中断还应当写如下语句:SETBET0;开T0中断允许SETBEA;开总中断允许以及相应的中断服务程序。,(2)定时器(方式1)应用程序举例:,IT0P:MOVTH0,#0FEH;再赋定时初值FE0CHMOVTL0,#0CHCPLP1.0;P1.0状态取反RETI;中断返回,程序设计:中断服务程序中完成初值的重载和方波的产生。,(2)定时器(方式1)应用程序举例:,ORG0000HAJMPMAINORG000BHAJMPIT0PMAIN:MOVSP,#60H;设置堆栈栈顶指针HERE:AJMPHERE;原地等待定时中断的产生IT0P:MOVTH0,#0FEH;再赋定时初值MOVTL0,#0CHCPLP1.0;P1.0状态取反RETI;中断返回END,(2)定时器(方式1)应用程序举例:,MOVTMOD,#01HCLRTF0;初始时定时溢出标志为0SETBTR0;启动定时器T0LOOP:MOVTH0,#0FEH;T0初值MOVTL0,#0CHLOOP1:JNBTF0,LOOP1;查询TF0,若TF0=1,说明定时CLRTF0;到,P1.0状态求反CPLP1.0SJMPLOOP,(2)定时器(方式1)应用程序举例:,将上面的中断改为查询方式,如下:,(2)定时器(方式1)应用程序举例:,分析:已知fosc=6MHz则:(振荡周期)1Tc=1/6MHz(机器周期)1Tm=12Tc=12/6MHz=2s定时时间T=1s计数脉冲值=1s/2us=500000216=65536方式0:Tmax=2132us=16.384ms方式1:Tmax=2162us=131.072ms方式2:Tmax=282us=512us考虑使用方式1,每隔100ms中断1次,中断10次即1s。,P127例6-2:若晶振频率为6MHz,T0定时1s。,T0定时100ms:已知fosc=6MHz则:(机器周期)1Tm=12Tc=12/6MHz=2S100mS2S=50000计算初值:6553650000=15536=3CB0H,P127例6-2:若晶振频率为6MHz,T0定时1s。,(2)定时器(方式1)应用程序举例:,10次计数的实现:循环程序实现DJNZB,LOOP(或DJNZRn,LOOP)B的初值为10,减1不为0表明定时时间未到,中断返回,否则停止计数,即CLRTR0,GATEC/TM1M0GATEC/TM1M0,定时器方式寄存器TMOD,由分析得知:T0选择方式1,初值=3CB0H,XXXX0001,初始化:MOVTMOD,#01H;选T0方式1MOVTH0,#3CH;赋初值高8位MOVTL0,#0B0H;赋初值低8位SETBTR0;启动T0定时SETBET0;开T0中断允许SETBEA;开总中断允许,长定时举例(续):,ORG0000HAJMPMAINORG000BHAJMPIT0PMAIN:MOVSP,#60HMOVB,#10;设置中断次数HERE:SJMPHERE;原地等待中断的产生IT0P:MOVTH1,#3CH;再赋初值MOVTL1,#0B0HDJNZB,LOOP;若中断不到10次就返回CLRTR0;1s时间到,停止T0工作LOOP:RETI;中断返回END,中断服务,2.工作方式2:8位自动重装的定时/计数器分为8位寄存器TH和8位计数器TL,计数,2.工作方式2:8位自动重装的定时/计数器分为8位寄存器TH和8位计数器TL,溢出位,2.工作方式2:8位自动重装的定时/计数器,THx/TLx赋相同初值在TLx计数达到0FFH再加“1”时,TL0将溢出,进位位直接进入“TFx”去申请中断,同时打开三态门,使THx中的值自动重装(Copy)进TLx,(1)工作方式2的编程:,TMOD寄存器选方式:写“M1,M0”=10B选中方式2,其他用法与各种方式1完全相同,分析:fosc=6MHz1机器周期=2S1KHz方波周期=1mS半个方波周期=500S500uS2uS=250若选择方式2工作,计算初值:28250=6,P125例6-1(改):从P1.0脚输出频率=1KHz方波。设:晶振=6MHz。利用T1定时中断。,Th:半周期,T:周期,(2)定时器(方式2)应用程序举例:,ORG0000HAJMPMAINORG001BH;T1的中断矢量CPLP1.0;中断服务:P1.0取反RETI;中断返回MAIN:MOVTMOD,#20HMOVTH1,#6MOVTL1,#6SETBET1SETBEASETBTR1HERE:AJMPHERE;原地等待中断END,初始化,;选T1方式2;赋重装值;赋初值;开T1中断;开总中断;启动T1,3.工作方式0:13位定时/计数器,T0:组织成TL0和TH0两个8位定时/计数器,4.Timer工作方式3几乎无用,仅适用于T0,T1:不再是定时/计数器了T1的TR1和TF1出借给TH0当控制位使用,剩下的TH1/TL1寄存器只能当作普通寄存器用。,振荡器,12,TL0(8位),TF0,申请中断,T0端,TR0位,GATE位,INT0端,1,比较2次读得;的(TH0),不相;等则重新读取。,MCS-51定时器小结:,2.运行/停止由TRx位控制,(当GATE=1时:由TRx位和Tx引脚上的信号共同控制),1.工作方式由TMOD决定;计数/定时由C/T位决定工作方式0(13位)很少用到工作方式3(T0拆为双8位)几乎无用工作方式1(16位)经常用到工作方式2(8位自动重装)经常用到,3.从初值按机器周期或外部脉冲递加,溢出位TFx申请中断;中断允许由ETx位和EA位控制,,思考与习题,12.判断下列说法是否正确(1)SCON与定时器/计数器的控制无关(2)TCON与定时器/计数器的控制无关(3)IE定时器/计数器的控制无关(4)TMOD与定时器/计数器的控制无关,(1),思考与习题,作业:P.136-1、6,选作10题。1.晶振频率3MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间多长?6.编写程序,要求使用T0采用方式2定时,在P1.0输出周期为400us,占空比为1:10的矩形连续脉冲。10.编写程序,要求功能为:当P1.0引脚电平为正跳变时,对P1.1的输入脉冲进行计数;当P1.2的引脚电平负跳变时,停止计数,并将计数值写入(R1R0)画出流程图。,占空比(DutyRatio)在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。,思考与习题,思考与习题,思考:1.启动定时/计数与GATE有何关系?2.为什么一般情况下,在中断入口地址区间要设置一条跳转指令,转移到中断服务程序和实际入口处?,作业解答,作业1:已知fosc=3MHz,定时器在方式0、1、2的最大定时时间?解:Tm=12/fosc=4us,则各方式下的最大定时时间为方式0:213Tm=32768us=32.768ms方式1:216Tm=262.144ms方式2:28Tm=1.024ms,作业解答,作业6:采用T0,选择方式2定时400us,占空比为1:10的矩形波?(fosc=6MHz)错误一:立即数的表示#4AH错误二:方式2的初始化MOVTL0,#*HMOVTH0,#*H错误三:采用软硬件结合的方法实现定时,SETBTR0SETBET0SETBEASETBP1.0SJMP$,IT0P:CLREACLRP1.0MOVR1,#9DLY:DJNZR1,DLYSETBP1.0SETBEARETI,均占用时间,由于在执行DLY时T0继续运行,当T0发生一次定时溢出时与上次的溢出时刻不是严格的定时时间。,作业解答,作业6:采用T0,选择方式2定时400us,占空比为1:10的矩形波?(fosc=6MHz)错误一:立即数的表示#4AH错误二:方式2的初始化MOVTL0,#*HMOVTH0,#*H错误三:采用软硬件结合的方法实现定时,SETBTR0SETBET0SETBEASETBP1.0SJMP$,IT0P:CLREACLRP1.0MOVR1,#9DLY:DJNZR1,DLYSETBP1.0SETBEARETI,均占用时间,由于在执行DLY时T0继续运行,当T0发生一次定时溢出时与上次的溢出时刻不是严格的定时时间。,作业解答,作业6:采用T0,选择方式2定时400us,占空比为10:1的矩形波?(fosc=6MHz)分析:假设占空比的含义为TH/TL,当fosc=6MHz时,方式2中断一次的最大定时时间为28Tm=512us矩形波的一个周期时间解决关键是确定多长时间中断一次?,由于,所以采用以TL为定时时间,10次这样的定时为TH,作业解答,作业6:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论