配色: 字号:
定时器&计数器暴强总结
2013-08-22 | 阅:  转:  |  分享 
  
CopyrightbyJilong.Bai

1



Counter/TimerSummary

一,基本原理及操作:

1,Counter/Timer相关寄存器(有图有真相)



2,基本原理及相关基本操作:Here,onethingweshouldalwayskeepinmind:对51的

操作就是对寄存器的操作,只要我们熟悉了对上面寄存器的操作,这所谓的定时器

/计数器自然彻底被我们征服了。好了上图,我一直坚持有图才有真相:

























































CopyrightbyJilong.Bai

2





2.1定时器的详细操作:



由上面图我们可以知晓,定时器其实很简单。和其相关的寄存器主要有两个:TMOD

和TCON,其具体流程我们通过该图也一目了然。其实对定时器的操作我们需要关注的

地方主要有三个:

一首先我们得让它工作在定时器模式,其最小时间单位由指令周期决定,即12个振荡周期

=1us.

二,当其工作在定时器模式时,在其工作之前我们得做好全部的准备,只为万事俱备,这

里所谓的万事主要包括:其实由上图的组合逻辑公式来决定

三,当THx溢出时,TFx会由硬件自动置1,中断响应后,TFx仍然由硬件置0

所以具体流程以及相关操作步骤在上图中已经声明,此处不再赘述。









CopyrightbyJilong.Bai

3



2.2计数器的详细操作



对于计数器的操作与定时器极为类似,其主要区别是首先我们得让其得工作在定时器

模式,即C/T这一位必须为1.之后与定时器操作几乎一样,不再赘述。如上图所示。

另外当我们对计数器进行控制时,即STEP2时,我们需要注意以下方面,如图:



CopyrightbyJilong.Bai

4



3,定计数器的具体操作流程

3.1详细操作流程

3



3.2详细操作步骤



当然了,这里我们有个思想就是:尽量多用mode2,因为只有该模式

不会造成时间上的误差,只一点在后边我们会详细说明。



















CopyrightbyJilong.Bai

5





二,定时器实例解读

实例一:us级的定时

1,功能陈述:定时100us使P1^0反相

2,产生的问题:通过示波器我们发现,P1^0反相的时间间隔是110us,这10us是从哪里

冒出来的真是奇哉怪也?

3,问题分析:其实这10us是因为我们的程序造成的,当定时器发生溢出后,我们需要跳

转到TO_RELOAD,执行该子程序的时候就会造成时间的延迟,具体如下图中红色标注字

所示。



CopyrightbyJilong.Bai

6







综上:我们看出了使用模式2的优势,这也就是为什么我们建议尽量在满

足使用的情况下使用模式2的原因。(当然如果我们的定时时间是ms级的,其

误差就在千分之一可以忽略,但如果在us级,因为其误差在10%,我们就一定

要去考虑了)



CopyrightbyJilong.Bai

7





实例二:超过65ms的定时

1,功能陈述:实例1遇到的问题是当我们需要定时很小时间,但是假如我们需要定时很长

时间,>65ms的时候,我们又该如何去操作呢?我们依然通过在定时时间溢出后反相

P1^0

2,产生问题:定时时间超过65ms

3,问题解决:应用“最小定时单位”的概念

4,最小定时单位概念:在下面的程序中我们设定的溢出时间是:10ms,这就是“最小定是

单位”

5,程序关键说明:设定好最小时间单位后,我们在此程序中设置了R0,用来控制P1^0的

反相时间,RO的初值我们设置为100,每次溢出后我们给RO自减1,直到RO=0的时候,

反相P1^0,这样就相当于我们给P1^0反相的时间=10010ms=1000ms=1s.

CopyrightbyJilong.Bai

8





CopyrightbyJilong.Bai

9



实例三:通过定时器产生方波

1,功能陈述:通过定时器相关设置产生1kHz的方波,我们仍然选择P1^0来作为观察的对



2,产生问题:通过示波器观察的图形我们发现该方波的频率不为1kHz,而是980Hz

3,问题解决:原因其实是和实例一中相同,所以我们要么使用模式2,要么重新调整THx

和TLx的初值,这里我们选择改变THx和TLx的初值来实现1KHx的方波

4,程序关键说明:重新设定初值,461-10=451(此处减10的主要原因其实在实例一中已

经详细说明)65536-451=65085=FE3DH(THx=FEH,TLx=3DH)

CopyrightbyJilong.Bai

10





CopyrightbyJilong.Bai

11





献花(0)
+1
(本文系Transistor2...首藏)