我是靠谱客的博主 知性曲奇,最近开发中收集的这篇文章主要介绍51单片机—— 定时器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

定时器:简单的理解就是用来计时或者计数

 

定时器的作用:定时器的目的主要是用于精准计时,因为使用晶振的方法,常用的晶振为11.0592MHZ(在计算中常取整数12Mhz),所以会出现偏差,或者6MHZ ,所以一般使用的定时器。

单片机中使用定时器/计数 T0T1,它们分别是连接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单片机—— 定时器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部