定时器工作原理_第1页
定时器工作原理_第2页
定时器工作原理_第3页
定时器工作原理_第4页
定时器工作原理_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、定时器工作原理通电延时型。只要在定时的时间段内(即1分钟)定时器一直得电,则常开触电就会闭合,只要定时器不断电常开触电就会一直闭合。定时器断电则常开触电断开图6.1?定时器/计数器结构框图定时器/计数器1定时器/计数器0位序D7D6D5D4D3D2D1D0位标志GATEC/M1M0GATEC/M1M0M1M0工式功?能?说?明00113位计数器01216位计数器103自动再装入8位计数器114定时器0:分成两个8位计数器定时器1:II停止计数【例6.1】?设置定时器1工作于方式1,定时工作方式与外部中断无关,则M1=QM0=1GATE=0因此,高4位应为0001;定时器0未用,低4位可随意置数

2、,但低两位不可为11(因方式3时,定时器1停止计数),一般将其设为0000。因此,指令形式为:MOV?TMO-10H定时器/计数器工作方式与程设计通过对特殊功能寄存器TMOD中的设置M1、M0两位的设置来选择四种工作方式,定时器/计数器0、1和2的工作方式相同,方式3的设置差别较大。6.3.1 ?工作方式0工作方式寄存器TMOD中的M1M0为:00。定时器/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和TL0的低5位,组成一个13位定时器/计数器。当TL0的低5位计满溢出时,向TH0进位,TH0溢出时,对中断标志位TF0置位,向CPU申请中断。定时器/计数器0方式0的逻

3、辑结构如图6.2所示。1 .工作在定时方式C/?=0,定时器对机器周期计数。定时器在工作前,应先对13位的计数器赋值,开始计数时,在初值的基础上进行减1计数。定时时间的计算公式为:定时时间=(213?数初值)X振周期X12或?时时间=(213?数初),机器周期若晶振频率为12MHz,则最短定时时间为213-(213-1).1/12)106X12=1.最长定时时间为(213-0)X(1/12)M06X12=8192.=1,13位计数器对外部输入信号进行加1计数利用?由0变为1时,开始计数,?由1变为0时,停止计数,可以测量在?端出现的正脉冲的宽度。计数值的范围是1213=8192(个外部脉冲.【

4、例6.2】假设AT89S52单片机晶振频率为12MHz,要求定时时间8ms,使用定时器T0,工作方式0,计算定时器初值X。解:二?(213?)刈器周期?单片机晶振频率为12MHz时,机器周期=1.?.?8M03?=?(?,)X1?X=8192-8000=192?转换成二进制数为:【例6.3】假设AT89S52单片机晶振频率为12MHz,所需定时时间为250.§当T0工作在方式0时T0计数器的初值是多少?解:二?(213?)刈器周期?单片机晶振频率为12MHz时,机器周期=1.!?!?250=?(213?.X1?X?=8192-250=7942?转换成二进制数为:【例6.4利用T0方式

5、0产生1ms的定时,在P1.2引脚上输出周期为2ms的方波。设单片机晶振频率fosc=12MHz。解:(1)解题思路要在P1引脚输出周期为2ms的方波,只要使P1每隔1ms取反一次即可。执行指令为CPL?P1.2(2)确定工作方式?:?方式0?TMOD=00H=0:T0为定时功能;(D2位)GATE=0,只要用软件使TRO(或TR1)置1就能启动定时器T0(或T1);?M1M0=00,工作方式0?:?TMOD的为?=00H?TMOD.4TMOD可取任意,因T1不用,这里取0。?.用?MOV?TMOD,#00H?即可设定T0的工作方式(3)计算1ms定时时T0的初值机器周期??T=1/foscX

6、12=1.设T0的计数初值为X0,则?X0=?(213X)s?.?921000?7?92D?专换成二进制数为:?,??氐5位?等高8位装入TH0?低5位11000=18H装入TL0?1?1?EA=1,CPU开放中断;?ET0=1,允许T0中断;(4)编程可米用中断和查询两种方式编写程序。方法一:中断方式ORG?0000H?AJMP?MAIN?主程序MAIN?ORG?000BH?AJMP?IT0P?,T0中断服务程序IT0P?ORG?1000H?MAIN:MOV?SP,#60H?设堆栈指针?MOV?TH0,#0E0H?定时器T0送初值?MOVTMOD,#00H?设置T0为方式0,定时?MOV?T

7、L0,#18H?送定时初值?MOVTH0#0E0HSETB?EA?CPU开中断?SETB?ET0?T0允许中断?SETBTR0?动T0定时HERE:?SJMP?HERE?待中断中断服务程:IT0P:?ORG?1200H?T0中断入口?MOV?TL0#18H?重新装入计数初值?MOV?TH0#0E0H?CPL?P1.2?输出方波?RETI?断返回?END?MOV?TMOD#00H?;设置T0为方式0,定时?MOV?TL0#18H?送初?MOV?TH0#0E0H?SETB?TR0?动T0定时LOOP:?JBC?TFQNEXT?;查询定时时间到否?SJMP?LOOPNEXT:MOV?TL0,#18H

8、?重新装入计数初值?MOVTH0#0E0H?CPL?P1.2?WB方波?SJMP?LOOP?复循环6.3.2 ?工作方式1工作方式寄存器TMOD中的M1M0为:01。定时器T0工作方式1与工作方式0类同,差别在于其中的计数器的位数。工作方式1以16位计数器参与计数。定时器/计数器0方式1的逻辑结构如图6.3所示。1.工作在定时方式C/?=0,定时器对机器周期计数。定时时间的计算公式为:定时时间=(213?数初值)振周期X12或?时时间=(213?数初),机器周期若晶振频率为12MHz,则最短定时时间为216(2161),1/12)106X12=1.s最长定时时间为(216-0)X(1/12)M

9、06X12=65536.$65.5msC/?=1,16位计数器对外部输入信号进行加1计数。计数值的范围是1216=65536(个外部脉冲)。【例6.5】假设AT89S52单片机晶振频率为12MHz,所需定时时间为10m.当T0工作在方式1时T0计数器的初值是多少?解:二?(216?刈器周期?单片机晶振频率为12MHz时,机器周期=1.?.?10M03?=?(213?)X1?X=65536-10000=55536?专换成二进制数为:【例6.6】假设AT89S52单片机晶振频率为12MHz,定时器T0的定时初值为9800,计算T0工作在方式1时的定时时间。解:二?(216?,机器周期H?HIIIH

10、HIH?=?(216?-9800)M?t=655369800=55736.【例6.7】?用定时器T0产生50HZ的方波。由P1.0输出此方波(设时钟频率为12MHZ).采用中断方式。解:50HZ的方波周期T为??T=1/50=20ms可以用定时器产生10ms的定时,每隔10ms改变一次P1.0的电,,即可得至150HZ的方波。定时器T0应工作在方式1。(1)工作在方式1时的T0初值,根据下式计算:?t=?(216?,)刈器周期?时钟频率为12MHz,则机器周期?=1.?10103?=?(?)X1?X=65536-10000=55536转换为二进制数:?您8位??氐8位高8位?=0D8H装入TH

11、0,低8位?=0CCH装入TL0(2)程序ORG?0000H?AJMP?MAIN?OrG?000bh?.的中断入口地址AJMP?T0INT?ORG?0100HMAIN:?MOV?TMOD,#01H?设置T0为工作方式1MOV?TH0,#0D8H?装入定时器初值MOV?TL0,#0CCHSETB?ET0?置T0允许中断SETB?EA?CPU开中断SETB?TR0?动T0SJMP?$?寺中断中断服务程序;ORG?0300HT0INT:CPL?P1.0?P1.0取反MOV?TH0,#0D8H?;重新装入定时初值MOV?TL0,#0CCHRETI注:??SETB?ET0?置T0允许中断SETB?EA?

12、CPU开中断这两条指令可以等效为??MOV?IE,#82H。6.3.3?工作方式2定时器/计数器0方式2的逻辑结构如图6.4所示。工作方式寄存器TMOD中的M1M0为:10定时器/计数器在工作方式2时,16位的计数器分成了两个独立的8位计数器TH和TLo此时,定时器/计数器构成了一个能重复置初值的8位计数器。中,TL用作8位计数器,TH用来保存计数的初值。每当TL计满溢出时,自动将TH的初值再次装入TLo1.工作在定时方式C/?=0,定时器对机器周期计数。定时时间的计算公式为:定时时间=(28?沙数初)一振周期M2或??时时间=(28?数初值)刈器周期若晶振频率为12MHz,则最短定时时间为2

13、8-(28-1).1/12)106X12=1.最长定时时间为-0)X(1/12)X10,2=256.C/?=1,8位计数器对外部输入信号进行加1计数。计数值的范围是128=256(个外部脉冲)。【例6.8利用T0方式2实现以下功能:当T0(P3.4)引脚每输入一个负脉冲时,使P1.0输出一个500.s的同步脉冲。设晶振频率为6MHz,请编程实现该功能。波形如图6.5所示。图6.5?,J6.6波形图(1)?确定工作方式首先选T0为方式2,外部事件计数方式。当P3.4引脚上的电发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500.s定时工作方式,并使P1.0输出由1变为0。T0定

14、时到产生溢出,使P1.0引脚恢复输出高电平。T0先计数,后定时,分时操作。根据题目要求方式控制,TMOD是:计数时:(TMOD)=00000110B=06H定时时:(TMOD)=00000010B=02H(2)计算初值机器周期T=12/fosc=12/6MHZ=2.s计数时:计数个数?X=1计数初值?=(256-X)=(256-1)=255=0FFH,(TH0)=(TL0)=0FFH定时时:计数个数?X=T/Tm=500,2.s=250定时初值?=256X=256250=6,(TH0)=(TL0)=06H?采用查询方法START:MOV?TMOD,#06H?T0方式2,外部计数方式?MOV?T

15、H0#0FFH?T0计数初值?MOV?TL0#0FFH?SEtb?tR0?/T0计数LOOPI:JBC?TF0,PTF01?查询T0溢出标志,TF0=1时转移,且TF0=0(查P3.4负跳变)?SJMPLOOPIPTF01:CLRTR0?停止计数?MOV?TMOD#02H?;T0方式2,定时?MOV?TH0#06H?T0定时500.初值?MOV?TL0#06H?CLR?p.?.0,0?SETB?TR0?动定时500.LOOP2:JBC?TF0,PTF02?查询溢出标志,定时到TF0=l?转移,且TF0=0(第一个500.否)?SJMP?LOOP2PTF02:SETB?P1?P1.0置1(到了第

16、一个500ss)?CLR?TR0?Bt计数?SJMP?START6.3.4?工作方式3工作方式寄存器TMOD中的M1M0为:11。工作方式3仅对定时器/计数器0有效,此时,将16位的计数器分为两个独立的8位计数器TH0和TL0。当定时器/计数器0工作在方式3时,定时器/计数器1只能工作在方式02,并且工作在不需要中断的场合。在一般情况下,当定时器/计数器1用作,行口波特率发生器时,定时器/计数器0才设置为工作方式3。此时常把定时器/计数器1设置为方式2,用作波特率发生器。定时器/计数器0在方式3下的逻辑结构如图6.6所示。【例6.9】设某用户系统中已使用了两个外部中断源,并置定时器T1工作在方式2,作,行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。fosc=12MHz。(1)?确定工作方式T0方式3下,TL0作计数用,而TH0可用作8位的定时器,定时控制P1.0引脚输出5kHz的方波信号。T1为方式2,定时。TMOD是:?00100111B=27H(2)?计算初值TL0初值:FFH,TH0初值X0计算如下:P1.0的方波频率为5kHz,故周期T=1/(5kHz)=0.2ms=200.用TH0定时100.时,Xo=256-100X12/12=156(3)程序如下:MOV?TMOD,#27H?T0为方式3,计数;T1为方式2,定时?MOV?

温馨提示

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

评论

0/150

提交评论