1、工作方式0
定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。
(图片)
1.1.C/T:前面我们说过,定时/计数器即可作定时用也可用计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在我们。如果C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。顺便提一下:一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的初学者要注意。
1.2.GATE:看上图,当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况:
GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。
GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1引脚的控制,只有TR1为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性可以用来测量一个信号的高电平的宽度,想想看,怎么测?
2、工作方式1
工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。
3、工作方式2
在介绍这种式方式之前先让我们思考一个问题:比如我要计1000个数,可是16位的计数器要计到65536才满,怎么办呢?办法是用预置数,先在计数器里放上64536,再来1000个脉冲,不就行了吗?是的,但是计满了之后我们又该怎么办呢?要知道,计数总是不断重复的,当计满并溢出后,计数器里面的值变成了0(为什么,这时硬件自动清零),因此下一次将要计满65536后才会溢出,这可不符合要求,怎么办?当然办法很简单,就是每次一溢出时执行一段程序(要不然要溢出干吗?)可以在这段程序中做把预置数64536送入计数器中的事情。所以采用工作方式0或1都要在溢出后做一个重置预置数的工作,做工作当然就得要时间,一般来说这点时间不算什么,可是有一些场合我们还是要计较的(如串口通信等),所以就有了第三种工作方式自动再装入预置数的工作方式。此时M1M0=10。
自动重装时TH0(1)赋初值(预置数)
通常这种式作方式常用于波特率发生器(我们将在串行接口中讲解),用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最好的了。
3、工作方式3
这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记。如此T1不是无标记、控制可用了吗?是的。
一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。
定时器/计数器的定时/计数范围
工作方式0:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。
工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。
工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。
预置值计算
:用最大计数量减去需要的计数次数即可。
例:流水线上一个包装是60盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,应当预置多大的值呢?对了,就是8192-60=8132。当然设为计数时,需将C/T=1。
以上是计数,明白了这个道理,定时也是一样。
初学者应多看相关书籍中的定时/中断部分,对个标志位的处理与应用要能理解,对你的应用开发有很大帮助的!!!,特别是在按键的消抖、延时等方面。下面给出一个实验,网友只要烧写进89C51,放到实验板即可看到效果,然后在想????
定时器方式0的应用:
应用定时器T1产生1MS的定时,并使P1。0输出周期的2MS方波,设晶震6MHZ。
首先要计算T0的初始值,以定时器方式工作时,每一机器周期计数器加1,6MHZ晶震时的机器周期T=12/F=12/6*10的6次方,设初值为X,则:
2的13次方-X/2*10的负3次方 =10的负3次方 X=7692
以13位二进制数表示为:X=1111000001100B(从前算8位为F0H;)
计算得:TH0初值为0F0H,TL0初值为0CH;
因复位以后,TMOD、TCON初值为0,因此以定时器方式0工作时,初始化程序不必对TMOD重置0,我们查询TF0的状态来控制P1。0输出。在P1。0端得到周期为2MS的方波。
*
程序清单
:
*
START:MOV TL0,#0CH;初值写入T0
MOV TH0,#0F0H;
SETB TR0;启动T0计数
LOOP:JBC TF0,PTF0
AJMP LOOP
PTF0:MOV TL0,#0CH;计数初值重装
MOV TH0,#0F0H;
CPL P1。0;P1。0求反
AJMPN LOOP
您可以改变定时初值来改变方波的宽度。
一、工作方式0 定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。 (图片) 2.C/T:前面我们说过,定时/计数器即可作定时用也可用计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在我们。如果C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打
51单片机
方式
1、2的详解:写在前面知识填充
方式
一
工作
原理初值的设定代码实现
方式
二
工作
原理初值的设定代码实现
1.本篇博文旨在帮助那些像我一样刚入门
51单片机
,如果你对
定时器
有一定了解,但是其中的的
工作
方式
不能理解,那么这篇文章很适合你,如果你是大神的话…直接绕行吧……
2.我在学习的过程中由于知识上的不足很多的讲解看不懂,在翻找了许多资料真正理解之后,打算以一种简单易懂的
方式
进行解释,...
定时器
:
51单片机
的
定时器
属于
单片机
的内部资源,其电路的连接和运转均在
单片机
内部完成。
定时器
作用:
1.用于计数系统,可实现软件计时,或使程序每隔一固定时间完成一项操作
2.替代长时间的Delay,提高CPU的运行效率和处理速度
1.
定时器
资源
以STC89C52为例,
定时器
个数三个(T0,T1,T2),其中T2是此型号
单片机
增加的资源。
注意:
定时器
的资源和
单片机
的型号是关联在一起的,不同的型号可能有不同的
定时器
个数和操作
方式
,但一般来说,T0和T1的操作
方式
是所有
51单片机
共有的。
#include"reg52.h"#define uint unsigned int //宏定义
#define uchar unsigned char
sbit LED=P2^0;
uchar i=0;
void main()
TMOD=0x00;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
/*Timer0
工作
在模式0下时为13位定时/计数
学习
51单片机
和C语言编程,可以帮助我们更深入地理解嵌入式系统的原理和
工作
方式
。对于初学者来说,掌握一份适合自己的学习资料非常重要。
要学习
51单片机
-C语言版,可以阅读《手把手教你学
51单片机
-C语言版pdf》这本电子书,这本书内容丰富,讲解详细,配合实例编程,非常适合初学者自学。以下是学习本书的几个关键点:
第一,掌握基本的硬件知识,包括
单片机
的结构和特性,尤其是各种寄存器的作用和配置方法。
第二,了解C语言编程基础,尤其是语法、数据类型、运算符、控制结构、函数等,这是编写
单片机
程序的基础。
第三,通过实例编程加强对知识的理解和运用能力。例如,可以尝试写一些简单的IO控制、
定时器
中断、串口通讯等程序。
第四,可以搭配相应的开发板和开发环境进行实践学习。例如,可以使用STC89C
51
开发板和Keil或SDCC开发环境。
总之,《手把手教你学
51单片机
-C语言版pdf》这本电子书是一个不错的学习资料,但也需要具备一定的基础知识和耐心,可以结合其他资料和实践不断提高自己的能力。
### 回答2:
学习
51单片机
-c语言版, 需要基础的C语言编程知识。在学习前,先要熟悉C语言的数据类型、循环、判断及函数等语法结构,并掌握C语言的编写方法。
在学习
51单片机
-c语言版之前,需要准备好学习环境,如下载并安装Keil软件, 安装并关联好相应的
单片机
模拟器。Keil软件中有类似于记事本的编辑窗口用来编写C语言代码, 以及编译,调试和下载程序到
单片机
等功能。
在学习时,可以选择一些简单的例程开始学习,逐步理解其代码逻辑,了解基本的寄存器操作和中断等知识。可以从LED灯等简单的实验开始,逐渐增加难度和功能的复杂度。
同时,可以参考一些权威的学习资料如《
单片机
原理与应用》、《
51单片机
学习与应用》等相关书籍,或结合网络资源进行学习。在学习过程中,需要勤加练习,多编写代码进行实践,同时多与他人交流学习体会和技术问题。通过坚持不断的学习和练习,便可以逐步掌握
51单片机
-c语言版编程技巧,提高自己的
单片机
应用开发能力。