概述
定时器:简单的理解就是用来计时或者计数
定时器的作用:定时器的目的主要是用于精准计时,因为使用晶振的方法,常用的晶振为11.0592MHZ(在计算中常取整数12Mhz),所以会出现偏差,或者6MHZ ,所以一般使用的定时器。
单片机中使用定时器/计数 T0和T1,它们分别是连接51单片机的 P3.4 P3.5 两个口,其它口I/O口不能使用
定时器/计数器的初始化
1、确定工作方式(即对TMOD赋值);
2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);
3、根据需要开放定时器/计数器的中断(直接对IE位赋值);
4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。
定时器的工作方式(4种):根据不同的需要选择不同的计时方式
工作方式1(以timer0为例子)
工作方式1的计时方式
工作方式3的工作方式
在定时计时的过程中,往往需要我们计算装载值,也就是计时的时长,下面以工作模式0为例子,
首先要把计时的时长装到寄存器的TH0,TL0,也就是寄存器的高八位,和低8位
计数值的多少和定时器模式使用的位数有关,在其内部已经固定好了,根据实际,选择对应的计时模式,减去的值为所要计时的时长,取整,求余后面为TH0,TL0对应的位数
mode 0 填入计数值范例
mode 1 填入计数值范例
mode 2 填入计数值范例
如何计算定时器所需要的装载值,是定时器的重点
下面以一个例子
第一步:定时器工作于方式0定时模式
第二步:装入T0的常数。计数器每机器周期计数值加1,机器周期为(题目是6M晶振):
接下来就是计算初值的多少,并把二进制转化为16进制
题目给出是T0,所以是13位定时器的特性,TH0放x的高8位,TL0放低5位,(运用除2求余的方法,就可得到2进制数,)我们将x值重排如下:x = 1111 0000 0 1100,即得本任务的时间常数为:TH0 = F0H,TL0 = 0CH。
第三步:编写程序,
#include<reg52a.h>
sbit led=P2^5;
void main()
{
TMOD = 0x00; //定时器工作模式0
TH0=0xf0; //高八位
TL0=0x0c; //低5位
while(1)
{
if(TF0)
{
TF0=0;
TL0=0x0c;
TH0=0xf0;
led=~led;
}
}
}
最后
以上就是知性曲奇为你收集整理的51单片机—— 定时器的全部内容,希望文章能够帮你解决51单片机—— 定时器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复