第6章 AT89C51的定时器计数器.ppt_第1页
第6章 AT89C51的定时器计数器.ppt_第2页
第6章 AT89C51的定时器计数器.ppt_第3页
第6章 AT89C51的定时器计数器.ppt_第4页
第6章 AT89C51的定时器计数器.ppt_第5页
已阅读5页,还剩41页未读, 继续免费阅读

下载本文档

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

文档简介

1、第6章AT89C51计时器/柜台6.1计时器/柜台结构可编程计时器/柜台T1,T0。结构是图6-1所示的两个茄子操作模式(1)柜台操作模式(2)计时器操作模式4茄子操作模式(方法0-方法3)。TMOD:选择计时器/柜台T0、T1操作模式和操作方式。TCON:控制T0、T1的启动和停止数,包括T0、T1的状态。重置微控制器时,两个寄存器都清除0。6.1.1工作方式控制寄存器TMOD、图6-1、图6-2,8位分为两组,高4位控制T1、低4位控制T0。(1)仅以GATE灌嘴0: TRX(X=0,1)启动计时器/计数器。1:使用端号INT0*(或INT1*)的高电平和TRX条件控制计时器/柜台操作。(

2、2)M1,M0工作方式选择位表6-1 M1,选择M0工作方式M1 M0工作方式0 0,13位计时器/柜台。0 1方法1,16位计时器/柜台1 0方法2,8位常量自动重新装载1方法3,仅适用于T0,T0分为两个8位计数器,T1停止计数。(3) C/T*柜台模式和计时器模式选择位,0:计时器模式。1:柜台模式。6.1.2计时器/柜台控制寄存器TCON字节地址为88H,位可寻址,位地址为88H8FH。TCON的格式如图6-3所示。图6-3,低4位是外部中断相关,介绍。高4位功能是(1) TF1,TF0计数溢出标志位(2) TR1,TR0计数执行控制位1:启动计时器/柜台操作的必要条件。0:计时器/柜

3、台关闭、6.2计时器/计数器的4茄子工作方式6.2.1方法0 M1、M0 00、计时器/计数器的框:图6-4、13位柜台、C/T*位确定工作模式。1:开关压在下面,以柜台操作模式计算P3.4,P3.5针的外部输入脉冲,如果针发生负跳,计数器加1。GATE位:确定计时器/计数器的操作取决于TRx条件或TRx和INTx*端号条件。(1) 0: a点(参见图6-2)的数量取决于TRx状态。(2) 1: B点位移由INTX*的输入平面和TRX的状态确定。计数由两个茄子条件控制:TRx和INTx*。6.2.2方法1 M1,m0=01,16位柜台。6.2.3方法2计数满后自动加载计数初始值。M1,M0=1

4、0,对应的方块图解如下:图6-5,TLX是常量缓冲,当TLX计数溢出时,设置“1”溢出标志TFX时,自动将THX的初始值发送到TLX,以便从初始值重新计算TLX。计时器/柜台方法2的操作如图6-7 (X=0,1)所示。图6-6,在用户软件期间,可以省略重新安装初始值的程序,以实现准确的计时。6.2.4方法3添加添加8位计时器/计数器以添加3个计时器/柜台。图6-7,仅适用于计时器/柜台T0。T1在方法3中不起作用。T1方法3对应于TR1=0,是停止计数(在牙齿中,T1可以用作串行端口波特率生成器)。1工作原理3下的T0 T0分为单独的8位柜台:TL0和TH0。TL0将T0的状态控制位C/T*、

5、GATE、TR0、TH0固定为8位计时器(而不是外部计数模式),使用计时器T1的状态控制位TR1和TF1,并使用计时器T1的中断请求源TF1。每个针脚和T0的逻辑关系如图6-8所示。图6-8(a)、图6-8(b)、2T0以多种方式工作,在方法3下的T1中工作。仅当用作T1牙齿串行端口的波特率发生器时,才能在T0牙齿方法3中工作。如果T0牙齿方法3,则T1可以设置为方法0、方法1和方法2,并且可以在没有串行端口的波特率发生器或中断的情况下使用。(1)T1在方法0、图6-9、(2) T1在方法1、(3) T1在方法2、图6-10、图6-11、(4)T1在方法3中工作。如果T1的控制器M1、M0=1

6、1,则停止计算T1牙齿。如果T0牙齿方法3,则T1仅执行两个茄子控制条件:C/T*和M1,M0。选择C/T*计时器模式或柜台模式,M1,M0选择T1牙齿的工作方式。,6.3柜台模式输入信号所需的外部计数脉冲的最大频率为系统振荡器频率的1/24(例如,选择12MHz频率的晶体)。可以输入500KHz的外部脉冲。输入信号的高低级别必须至少保持一个机器周期。如图6-12所示,Tcy是机器周期。图6-12,6.4定时器/柜台编程和应用4茄子工作方法中的方法0与方法1基本相同。方法0与MCS-48兼容,因此初始值的计算很复杂,实际应用中通常不使用方法0,而是使用方法1。6.4.1方法1假设使用案例6-1

7、系统时钟频率6MHz。如图6-13所示,从P1.0输出2毫秒的方波。图6-13,方波的周期确定为T0,T0每1毫秒计算溢出(每1毫秒生成中断),CPU在中断响应后在中断服务程序中反转P1.0。(1)计算初始值如果x将初始值设置为x,则:(216-x)210-6=110-3 216-x=500 x=65036 x将转换为十六进制数(x=fe0ch),因此T0的(3)除了生成方波外,计算机编程中断服务程序还必须将计数的初始值重新加载到计时器中,注意准备下一个中断。参考流程:org 0000h reset : ajmp main旧主节目org 000bhT0中断入口ajmp it0pT0中断处理程序

8、it0p org 0100h main : mov sp,# 60h堆栈指针mov tmod,# 01h将T0设置为方法1,a call pt0m 0。子程序pt0m 0 here : ajmphere调用自跳跃pt0m 0: mov tl0,# 0chT0中断服务节目,T0重置初始值movth0,# 0f eh setbtr0启动T0 setb et0。T0允许中断setb ea CPU开放中断ret itop : mov tl0,# 0chT0中断服务子程序,T0初始值movth0,# 0feh CPL P 1.0P1.0的状态是RETI祖怀方法的参考节目: Movtmod,# 01h将T

9、0设定为方法1,setbtr0。T0循环: mov th0,# 0feh连接T0初始值movtl0,# 0chloop1: jnbtf0,loop1查询TF0标志clr tr0。T0溢出,关闭t0 CPL p 1.0P1.0的状态反转SJMP LOOP示例6-2假定系统时钟6MHz,写入计时器T0以生成1秒计时程序。(1)T0工作方式的确定时限较长,采用什么工作方式?可以根据多种工作方式的特性进行计算。方法0最多可以计划为16.384毫秒。方法1最大定时131.072毫秒;方法2最大定时512s。选择方法1,每100毫秒中断,中断10次1s。(2)计算计数初始值:(216-X)210-6=10

10、-1因为:X=15536=3CB0H因此:TH0=3CH,tl0=b0h (3)开机,主节目入口主org000bhT0中断入口LJMP IT0P;T0中断处理程序it0p org 1000h main: movsp,# 60h堆栈指针mov b,# 0ah设置周期数10次movtmod,# 01hT0在1 movtl0,# 0b0h上工作。为T0设置初始值movth0,# 3ch setbtr0。启动T0 setb et0。允许T0中断,setb eaCPU开放中断here:sjmp here;中断备用itop: movtl0,# 0b0h重新安装T0中断子程序,初始值Movth0和# 3ch

11、。DJNZ B,循环clr tr0到了1s计时时间后,停止T0任务LOOP: RETI 6.4.2方法2的应用程序可能会跳过从应用程序重新安装初始值的命令,生成相当准确的计时时间。示例6-3 T0(P3.4)针脚发生负跳跃时,从P1.0针脚输出1毫秒的方波,如图6-13所示。(假定时钟6MHz),(1)工作方式选择T0方法1的数量,初始值0FFFFH,即外部计数输入部T0(P3.4)发生负跳跃时,设置T0 1和溢出,设置溢出标志TF0“1”,请求中断。进入T0中断程序后,如果将F0标志设置为“1”,则表明T0脚收到了负的跳跃信号。图6-14,T1被定义为方法2计时。如果在T0脚发生负跳跃后开始

12、T1,则每500s中断,中断服务程序反转P1.0,以使P1.0牙齿周期产生1毫秒的方波。(2)设置计算T1初始值T1的初始值为x:(28-x)210-6=510-4 x=28-250=6=06h(3)计算机编程org000h重置333门户主节目T1中断服务过程org0100h main : mov sp,切换调用对T0,T1初始化子节目LOOP : MOVC,F0;T0是中断生产、生产;中断,F0=1 JNC LOOP;T0没有生成中断,跳跃;循环,T0中断setbtr1待机;启动T1 setbet1。T1中断here : ajmphere、pt0m 23360 mov tmod、# 26h允

13、许初始化,T1设置为方法2。T0表示方法1计数movtl0,# 0ffhT0初始值movth0,# 0f FH setbtr0启动T0 setb et0。T0中断movtl1,# 06h允许T1初始值mov TH1,# 06h clr F0T0牙齿已发生的中断徽标F0为0 SETB EA RET IT0P : CLR TR0T0中断服务节目,T0停止计数,SETB F0生成中断徽标RETI IT1P: CPL P1.0;T1中断服务,P1.0位反向同步在T1定时中断服务节目IT1P中,T1中断服务程序删除重新加载初始值06H的命令。示例6-4应使用T1的方法2计算外部信号数,每100个100个

14、反转P1.0。牙齿示例是方法2计数模式的应用。(1)选择工作方法。外部信号由T1(P3.5)脚输入,每次出现负跳跃计数器,1,输入100个脉冲,计数器生成溢出中断,中断服务程序将P1.0翻转一次。T1方法2的控制器为TMOD=60H。如果不使用T0,则可以使用TMOD的低4位,但T0不能进入3。其中取整零。(2)计算T1的初始值X=28-100=156=9CH,因此TL1的初始值为9CH,初始值寄存器TH1=9CH (3)计算机编程Org0000h LJMP Main Org001bh。T1中断服务节目门户,CPL P1.0;P1.0位反转reti org 0100h main : mov t

15、mod,# 60h方法2将T1设置为计数movtl0,# 9ch。T0初始值movth0,# 9ch setbtr1在启动t1 HERE 3360 AJMP HERE 6 . 4 . 3方法3的应用程序节目T0方法3时,TL0和TH0分为两个单独的8位计时器/计数器。其中tl0: 8位计时器/柜台Th0: 8位计时器。如果T1牙齿串行端口波特率生成器,则T0设置为方法3。示例6-5假定89C51应用节目系统的两个外部中断源已经在使用中,并且波特率发生器被设置为T1牙齿操作模式2。现在需要添加外部中断源,并将p 1.0 pin输出控制为5kHz方波。设定系统时钟6MHz。图6-15,(1)选择工

16、作方法TL0作为方法3计数,将T0针(P3.4)作为附加外部中断输入,将TL0初始值设置为0FFH。T0针平检测到负跳跃时,TL0溢出,中断申请TH0以8位方法3定时控制P1.0输出5kHz的方波信号。图6-15所示。(2)初始值计算TL0的初始值设置为0FFH。5kHz的方波周期为200s,TH0的定时时间为100s。TH0初始值x的计算方法如下:(28-x)210-6=110-4 x=28-100=156=9ch(3)计算机编程org000h ljmp main org000bhT0中断入口LJMP TL0INT;跳跃T0(TL0)中断服务节目org001bh在T0方法3中,TH0是T1的中断LJMP TH0INT中的地图册条目上单击鼠标右键。跳跃TH0中断服务节目org 0100h,main: mov tmod,# 27hTL0方法3个数,TH0定时,T1方法2;计时(波特率发生器)movtl0,# 0ffh设置TL0秒的值movth0,# 9ch。设置TH0秒的值movtl1,# datal。Data是波

温馨提示

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

评论

0/150

提交评论