MCS-51的定时器-计数器.ppt_第1页
MCS-51的定时器-计数器.ppt_第2页
MCS-51的定时器-计数器.ppt_第3页
MCS-51的定时器-计数器.ppt_第4页
MCS-51的定时器-计数器.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

第12章MCS-51的定时器/计数器,内容安排,一.内部结构及工作原理二.定时器/计数器的控制三.工作方式四.初始化五.应用举例,12.1内部结构及工作原理,MCS-51内部提供2个16位可编程的定时器/计数器,可编程修改定时或计数的参数/方式,特点:,T/C0和T/C1的内部结构基本相同,它们即可独立工作,也可相互组合工作T/C0是一个16位加1计数器,也可以拆成两个8位的专用寄存器(TH0和TL0)独立使用,它们各自占一个端口地址TH08CH,TL08AH,TH18DH,TL18BH16位加1计数器复位后初始值为0000H,用来存放定时或计数的初值每来一个计数脉冲,计数器加1,加满后(FFFFH0000H),将产生一个溢出脉冲,使标志位TF0置“1”,该标志位可产生一个中断请求,也可供CPU查询启动计数后与CPU并行工作T/C0可工作于定时模式或计数模式,工作方式有四种:方式03,由寄存器TMOD、TCON设定,定时脉冲周期=机器周期,1.定时方式计数固定周期的脉冲,2.计数方式外部输入信号是加到T0(P3.4)或T1(P3.5)端。外部输入脉冲信号产生由1至0的下降沿时,定时器加1外部输入信号最高的计数速率是晶振频率的1/24,12.2定时器/计数器的控制,定时器/计数器的工作模式及方式由SFR(TMOD、TCON)控制,方法:由软件将控制字写入TMOD、TCON,目的设定T/C0和T/C1的工作方式和控制功能,定时器/计数器的初始化,1.工作方式寄存器TMOD(89H),功能:控制T/C0和T/C1的工作方式,其中高四位为T/C1的方式控制字段,低四位为T/C0的方式控制字,(1)M1、M0:工作方式选择位,注意:TMOD不能位寻址,只能通过字节传送方式设定,(2)C/T:计数/定时工作方式选择位,(3)GATE:门控设置位,GATE0:禁止门控工作方式,只要TR0(TR1)=1,不管INT0(INT1)是高电平还是低电平,启动T/C0(T/C0),GATE1:允许门控工作方式,计数器工作于定时方式,2.控制寄存器TCON(88H),功能:控制定时器的启动、停止以及定时器的溢出和中断情况,注意:通过软件置位/复位TR0/TR1,12.3工作方式,1.工作方式0,方式0是选择T/C0(T/C1)高8位和低5位的13位计数器方式,TH0进位,TH0溢出(回零)TF0标志进位(TF0=1)CPU申请中断通过查询TF0=1?判断TH0是否回零溢出,注意:,初值一次性有效,否则从0开始再次计数,需通过软件重新装入初值最大定时/计数值为213,2.工作方式1,是一个16位定时器/计数器方式1的结构几乎与方式0一样,唯一的差别:方式1中的TH1(TH0)和TL1(TL0)均是8位的,构成16位计数器最大定时/计数值为216,3.工作方式2,T/C0(T/C1)是一个16位计数器,被拆成一个8位的计数器TH0(TH1)和一个8位计数器TL0(TL1),且两者构成可以自动重装载的8位T/C,编程时,须给TH0(TH1)和TL0(TL1)置入相同值,工作过程:,注意:初值多次有效,硬件自动完成初值赋值通过软件修改初值最大定时/计数值为28,4.工作方式3,TH0只用于简单的内部定时功能,占用T/C1的TR1和TF1位,T/C1不工作于方式3,且只能按非中断的方式工作,常常利用它的定时功能作串行口波特率发生器,T/C1设置为方式3,则T/C1立即停止计数,并保持原有的计数值,T/C1可设置为方式02TR1及TF1已被T/C0(TH0)占用,计数开关已被接通,此时仅用T/C1的C/T来切换定时或计数工作方式,就可使T/C1工作计数器(8、13、16位)回零溢出,只能将输出送入串行口或不需要中断的场合,12.4初始化,1.初始化步骤,T/C的初始化:通过程序设定和控制T/C的工作方式和模式,初始化的步骤:确定工作方式,即根据题目要求先给TMOD送一个方式控制字计算计数/定时初值,并写入TH0、TL0或TH1、TL1中根据需要,置位EA使CPU开放中断,同时置位ET0/ET1允许T/C中断(IE),IP设定中断优先级给TCON送命令控制字,即置位TR0/TR1,启动T/C计数,2.计数器初值的计算,计数/定时器工作于计数模式时,首先给计数器送初值到TH0/TL0、TH1/TL1中计数器/定时器是加1计数,全“1”到全“0”溢出,置位TF0/TF1中断标志,向CPU提出中断请求设需要计数器计数的个数为X,计数初值为C,则计算计数初值表达式:C=M-X,3.定时器初值的计算,定时模式下,计数器对单片机振荡频率fosc经12分频后的机器周期进行加1计数设X表示计数个数,M表示模,C表示定时初值,Tcy表示机器周期(Tcy=12/fosc),则定时时间T的计算公式:T=XTcy=(M-C)Tcy,定时器的溢出率:1/T=fosc/(12X)=fosc/(12(M-C),fosc=12MHz,例12-1:设单片机主时钟fosc=12MHz,定时时间2ms,请编出初始化程序,解:设置工作方式控制字(TMOD)(89H)=00000000=00H(方式0)=00000001=01H(方式1),初始化程序MOVTMOD,#00H(#01H);送控制字MOVTH0,#0C1H(#0F8H);送初值高8位MOVTL0,#10H(#30H);送初值低8位SETBEA;开中断SETBET0SETBTR0;启动定时器,计算计数器初值:方式0:Tc2132ms/1s=6192=1830H方式1:Tc2162ms/1s=63536=F830H,12.5应用举例,1.方式0的应用,例12-2:利用T/C0方式0产生1ms定时,在P1.0输出周期为2ms的方波。设8031单片机晶振频率fosc=12MHz,解:(1)确定T/C0的工作方式要使P1.0输出周期为2ms的方波,只要使P1.0每隔1ms取反一次即可,(2)送T/C0的方式控制字定时:(TMOD)=00000000B=00H,即T/C0方式0,只由TR0启动,T/C1不用,高4位取0,(3)计算定时初值Tcy=12/fosc=12/(12106)s=1s计数个数:X=1ms/1s=1000定时初值:C=(213X)=81921000=7192D=1C18H=1110000011000BTH0初值为E0H,TL0初值为18H,(4)编程方法:中断或查询两种方式中断方法ORG0000HLJMPMAIN;转到主程序MAINORG000BHLJMPTC0S;转到T/C0的中断服务程序TC0S,主程序:ORG1000HMAIN:MOVSP,#6FHMOVTMOD,#00H;置T/C0的方式0,定时MOVTH0,#0E0H;送定时初值MOVTL0,#18HSETBEA;CPU开中断SETBET0;T/C0允许中断SETBTR0;启动T/C0定时HERE:SJMPHERE;等待中断,中断服务程序:ORG1200HTC0S:MOVTH0,#0E0H;重新装入计数初值MOVTL0,#18HCPLP1.0;输出方波RETIEND,查询方式,程序:ORG0000HLJMPMAIN;转到主程序MAINORG1000HMAIN:MOVSP,#6FHMOVTMOD,#00H;置T/C0的方式0,定时MOVTH0,#0E0H;送定时初值MOVTL0,#18HSETBTR0;启动T/C0定时LOOP:JBCTF0,DO1;查询定时时间到否SJMPLOOPDO1:MOVTH0,#0E0H;重新装入计数初值MOVTL0,#18HCPLP1.0;输出方波SJMPLOOP;周而复始END,2.方式1的应用,例12-3:例12-2也可采用方式1定时,只需修改TMOD及TH0、TL0,其他不变,3.方式2的应用,例12-4:利用T/C1方式2实现以下功能:当T1(P3.5)每输入一个负脉冲时,使P1.0输出一个500s的同步脉冲,如图所示。设fosc=6MHz,解:(1)确定T/C1的工作方式对T1(P3.5)输入的负脉冲采用方式2计数,而后P1.0输出500s的同步脉冲采用方式2定时。T/C1先计数,后定时,分时操作,(2)送T/C1的方式控制字计数时:(TMOD)=01100000B=60H定时时:(TMOD)=00100000B=20H,(3)计算计数初值计数个数:X=1计数初值:C=256X=2561=255=0FFH(TH1)=(TL1)=0FFH,(4)计算定时初值计数个数:X=T/Tcy=500s/2s=250计数初值:C=256X=256250=6=06H(TH1)=(TL1)=06H,(5)编程(查询法):查询TF1且由软件将TF1清零的方法程序:ORG0000HLJMPSTART;转到主程序STARTORG1000HSTART:MOVSP,#6FHMOVTMOD,#60H;置T/C1的方式2,外部计数MOVTH1,#0FFH;计一个数MOVTL0,#0FFHSETBTR1;启动T/C1计数LOOP1:JBCTF1,TIS;溢出否SJMPLOOP1,TIS:CLRTR1MOVTMOD,#20H;置T/C1的方式2,定时MOVTH0,#06H4H;定时500sMOVTL0,#06H4HCLRP1.0SETBTR1;(1个机器周期2s)LOOP2:JBCTF1,TIS1;溢出否(2个机器周期4s)SJMPLOOP2TIS1:SETBP1.0;输出同步脉冲(1个机器周期2s)CLRTR1AJMPSTARTEND,注意:考虑到程序中“”指令的机器周期数,定时初值应调整为06H+4H=0AH,也就是使T/C1少计4个机器周期,以确保P1.0输出的负脉冲宽度为500s,4.方式3的应用,解:(1)确定T/C0的工作方式T/C0方式3中,TL0可以计外部脉冲,令TL0对T0输入的负脉冲计数;TH0定时500s,TF1=1,使P1.0输出一个负脉冲为500s的同步脉冲,例12-5:利用T/C0方式3实现以下功能:当T0(P3.4)每输入一个负脉冲时,使P1.0输出一个500s的同步脉冲,如图所示。设fosc=6MHz,(3)计算计数初值(TL0)计数个数:X=1计数初值:C=256X=2561=255=0FFH(TL0)=0FFH,(4)计算定时初值(TH0)计数个数:X=T/Tcy=500s/2s=250计数初值:C=256X=256250=6=06H(TH0)=06H,(2)送T/C0的方式控制字计数时:(TMOD)=00000111B=07H由于TH0只能定时工作,故方式字中以TL0的计数方式定义,主程序:ORG1000HMAIN:MOVSP,#6FHMOVTMOD,#07H;置T/C0的方式3MOVTH0,#06H;定时MOVTL0,#0FFH;计一个数MOVIE,#10001010B;CPU开中断;T/C0、T/C1允许中断SETBTR0;启动T/C0计数HERE:SJMPHERE;等待中断,(5)编程(中断法):程序:ORG0000HLJMPMAIN;转到主程序MAINORG000BHLJMPT00S;转到TF0的中断服务程序TC0SORG001BHLJMPT01S;转到TF1的中断服务程序TC1S,TF1中断服务程序:ORG1300HTC1S:SETBP1.0;输出波形CLRTR1;关闭T/C1计数MOVTH0,#06H;重新赋TH0初值RETIEND,注意:程序执行时TF0与TF1中断不会同时产生(?)根据8051响应单级中断延误时间(3个机器周期)计算,调整TH0在中断服务程序中重新装入的初值?,TF0中断服务程序:ORG1200HTC0S:CLRP1.0;输出波形SETBTR1;启动T/C1计数MOVTL0,#0FFH;重新赋TL0初值RETI,例12-6:设8031时钟频率fosc=12MHz,请编出利用定时器/计数器T0在P1.0引脚上输出2秒的方波程序,解:(1)问题分析MCS-51系列单片机中有一个16位定时器/计数器(T/C)。当fosc=12MHz时,最大定时为65.536ms;当fosc=6MHz时,最大定时为131.072ms;都达不到1s时间,怎么实现?,解决方法:,方法1:采用两个T/C级联的方法一个T/C定时,回0溢出时,使P1.0输出一个负脉冲送到另一个T/C的外部脉冲输入端用以计数如:当fosc=12MHz时,最大定时时间可以达到T=(6553665536)1s=4294967296s=4294967.296ms=4294.967296s。若再与软件计数相结合,会产生更长时间,方法2:采用一个T/C定时与软件计数相结合的方法思路:在主程序中设定一个初值为20的软件计数器和使T0定时50ms。这样,每当T0定时到50ms时CPU就响应它的溢出中断请求,从而进入它的中断服务程序。在中断服务程序中,CPU先使用软件计数减1,然后判断它是否为零。若它为零,则表示定时1秒钟已到,便可恢复软件计数器初值和改变P1.0引脚上电平,然后返回主程序;若它不为零,则表示定时1秒未到,也返回主程序,如此重复上述过程,我们便可在P1.0引脚上观察到周期为2秒的方波,(1)确定T/C0的工作方式要使P1.0输出周期为2s的方波,只要使P1.0每隔1s取反一次即可。方式1,(2)送T/C0的方式控制字定时:(TMOD)=00000001B=01H,(3)计算定时初值计数个数:X=T/Tcy=50ms/1s=50000计数初值:C=65536-X=65536-50000=15536=3CB0H(TH0)=3CH;(TL0)=0B0H,主程序:ORG1000HSTART:MOVTMOD,#01H;令T0为定时器方式1MOVTH0,#3CH;装入定时初值MOVTL0,#0B0HMOVR2,#00H;软

温馨提示

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

评论

0/150

提交评论