- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机定时器计数器-第二版
第五章 定时器/计数器原理与应用 在单片机应用技术中,往往需要定时检测某个参数,按一定的时间间隔或依据对某种事件的计数结果来进行某种控制。通过一个可编程的计数器来实现定时和计数,不影响CPU的效率。因此,几乎所有单片机内部都提供了这样的定时器/计数器。 80C51有两个16位定时器/计数器T0和T1,80C52等单片机还有第三个定时器T2,它们都可以编程设定为内部定时器或外部事件计数器。 若是对内部时钟计数,是作为定时器使用;若是对从外部输入的脉冲信号计数,则是作为计数器使用。不管是工作在定时器方式还是计数器方式,80C51定时器/计数器在对内部时钟或外部事件计数时,不占用CPU时间,除非定时器/计数器溢出,才可能中断CPU当前操作。 5.1 80C51定时器/计数器的结构组成 计数器Ti在计满回0时能自动使TCON中的TFi置位,以表示计数器Ti产生了溢出中断请求,若此时中断是开放的(即:EA=1和ETi=1),计数器Ti的溢出中断请求便可为CPU响应。中断响应后TFi自动清零。 定时器/计数器用作定时器时,对机器周期进行计数,每过一个机器周期计数器加1,直到计数器计满溢出。由于一个机器周期由12个时钟周期组成,所以计数频率为时钟频率的1/12。显然定时器的定时时间不仅与计数器的初值即计数长度有关,而且还与系统的时钟频率有关。 5.3 工作方式及应用 80C51的定时器/计数器是加1计数的,有4种工作方式: 方式0:13位计数方式。 方式1:16位计数方式。 方式2:计数常数可自动重装的8位计数方式。 方式3:两个8位计数器与波特率发生器的工作方式。 定时器/计数器的方式设定通过对TMOD的设定来完成。由于TMOD不可位寻址,对TMOD的设定需通过直接寻址的字节操作来实现。例如,设定T0按方式1进行计数操作,并由内部TR0位来进行启停控制,此时GATE0应置0,所以控制字应为××××0101B=05H,设T1为复位状态,可用这样的指令完成设定: MOV 89H,#05H 或MOV TMOD,#05H 5.3.2 方式1工作状态 方式1为16位计数方式,其结构与操作同方式0基本一样,唯一的区别在于方式1寄存器THi、TLi以全16位计数。 用于定时工作方式时,定时时间为: T=( -计数初值)×12/fosc 用于计数方式时,计数的最大长度为 =65536个外部脉冲。 5.3.3 方式2工作状态 方式2为可自动重装计数初值的8位计数方式,如图5-7所示。方式0和方式1若用于循环重复定时或计数时,在每次计数满、溢出后,计数器回0,要进行新一轮的计数就得重新装入计数初值。这样一来编程麻烦,而且影响定时的精确度。? 在方式2中,16位计数器被拆成两个部分:TLi用作8位计数器,THi用来保存计数初值。当8位计数器TLi计数溢出后,会自动启动THi重新向TLi装入计数初值,从而进入新一轮的计数。这种工作方式可以避免在程序中因重新装入初值而对定时精度的影响,适用于需要产生相当精度的定时时间的应用场合。特别适于作串行口波特率发生器。 用于定时器工作方式时,其定时时间(TF溢出周期)为:T=( -TH的初值)×12/fosc 用于计数器工作方式时,最大计数长度为 =256个外部脉冲。 在程序初始化时,对TLi、THi赋予相同的初值。 5.3.4 方式3工作状态 若将T0设置为方式3,TL0和TH0被分为2个独立的8位计数器: TL0用原T0的各控制位、引脚和中断源,可工作于定时器或计数器方式,功能和操作与方式0或方式1相同。 TH0占用了原T1的控制位TR1和中断标志位TF1,它被固定为定时器工作方式,只用作简单的内部定时,其启动和关闭仅受TR1控制。 5.3.5 应用指导及实例 一.应用指导 1.? 定时器/计数器的复位状态 TMOD、TCON复位后的有效位均为零,故复位后,两个定时器/计数器均处于方式0的定时器工作状态,由内部TRi执行启、停控制,溢出中断标志为0。若需要定时器/计数器工作于其他方式,须在上电复位后的初始化程序中进行设定。 2.? 初始化设定 在利用定时器/计数器进行定时或计数之前,首先要通过软件对它进行初始化。初始化步骤如下: 1)? 定工作方式——对TMOD赋值; 2) 定时器/计数器TH0、TL0或TL1、TH1写入初值; 计数器采用加法计数,并在溢出时请求中断,因此不能直接输入所需的计数模值,而是要从计数最大值倒回去一个计数模值才是应置入的初值。算法如下: 设置入的初值为x,计数最大值为M=2n,(n=13,16,8) 计数方式时,x=M-计数模值 定时方式时,因为(M-x)×T=定时值,
文档评论(0)