历史上的今天
返回首页

历史上的今天

今天是:2025年08月12日(星期二)

正在发生

2018年08月12日 | 单片机控制定时器

2018-08-12 来源:eefocus

一、定时器介绍
51单片机有2个16位的定时/计数器T0、T1,52单片机有3个16位定时/计数器T0、T1、T2。
定时/计数器顾名思义就是有定时和计数的功能,下面主要介绍定时器,对计数器不进行论述单片机的定时功能在日常的单片机编程中应用十分的广泛,同时定时中断也是单片机常用的中断之一,所以学好定时控制也是非常重要的,如果不理解中断的概念请查我的文章嵌入式中断的理解 http://blog.csdn.net/snyanglq/article/details/50238205

二、单片机的内部框图与定时器工作原理分析


大家请看上面的图,这是定时器T0和T1内部结构图,图中用不同颜色的线条标注了相互之间的工作关系,
从上面的图中红线可以看出由TMOD选择由那个定时器工作,工作于什么方式;
从上面的图中蓝线可以看出由TCON决定定时器是否启动;
从上面的图中黄线可以看出外部技术输入由TH和TL进行累计;
从上面的图中紫线可以看出当TH和TL计数溢出时会向TCON进行申请报告;
从上面的图中绿线可以看出所有的定时中断都由TCON向CPU进行中断申请;
从上面的图中黑线可以看出外部中断直接向CPU进行中断申请;

通过上面的图大家已经对CPU的定时中断内部结构图有一个清晰的理解,下面再看看单片机的工作原理图


从上图可以看出当作为定时器使用时,计时脉冲来自于外部晶振振荡频率后的12分频,当设置为计数器时则是直接外部脉冲作为计时脉冲,控制选择定时还是计数由C/T位控制,而控制定时器是否进行计时则由B控制,B是一个与门的输出端,与门的工作原理是有0出0,全1出1,可见定时器要启动TRx和A必须要为1,而A是或门的输出,或门的工作原理是有1出1,全0出0,所以需要输入端要任意一位为1方可,当所有条件符合,TH和TL开始定时计算,当两个计数器计数满溢出时,会令TF置位,最后由TF向CPU发出中断请求,处理中断程序,注意此时,单片机的计数器会清零,这是计数器内部设计决定的,所以定时需要再次使用时需要重载计数器初值

三、寄存器介绍


TCON:
TF0和TF1:定时器/计数器溢出标志位。

                    当定时器/计数器0(或定时器/计数器1)溢出时,由硬件自动使TF0(或TF1)置1,并向CPU申请中断。

                    CPU响应中断后,自动对TF1清零。TF1也可以用软件清零。 

TR0和TR1:定时器/计数起运行控制位。  
                     TR0(或TR1)=0,停止定时器/计数器0(或定时器/计数器1)工作。
                     TR0(或TR1)=1,启动定时器/计数器0(或定时器/计数器1)工作。

外部中断暂时不介绍

TMOD:
GATE:门控位。  
             GATE=0,只要用软件使TR0(或TR1)置1就能启动定时器/计数器0(或定时器/计数器1);
             GATE=1,只有在(或)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器/计数器0(或定时器/计数器1)工作。不管GATE处于什么状态,只要TR0(或TR1)=0定时器/计数器便停止工作。
C/T: 定时器/计数器工作方式选择位。
           C/T =0,为定时工作方式;
           C/T=1,为计数工作方式。  
M0、M1:工作方式选择位,确定4种工作方式。


IE:
EA = 1, CPU开放总中断;     
ET0 = 1,允许T0中断;
TR TL:定时器寄存器
注意:由于reg52.h的库定义了大部分的寄存器所以可以直接给TCON TMOD IE赋值操作或者是单独寄存器操作。


四、中断程序执行方法和定时计数公式
中断程序执行方法有直接中断和查询两种方法,查询即查询TF位是否置位为1
定时初值计算公式为:
定时时间=(计数最大值 – 计数初值)×机器周期 
机器周期T = 12/晶振频率


或者是用取模的方式
TH0=(计数最大值 – 定时时间)/256;
TL0=(计数最大值 – 定时时间)%256;


首先解析为什么要设定初值?
当设定定时器为16为计数器时,则计数最大值为2^16 = 65536;
TH和TL分别为8位,即TL每逢256进一位,所以除掉256就能看出TH进了多少位,取模则是余下多少位
举个例子,2位计数器最大计数为4,要将初值6分到两个2位计数器,由于低位逢四进1所以剩下2

即TL = 2然后高位是1即TH=1,按照上面的方法:2^4 = 16,2^2 = 4; TH = (16-(16-6))/4=1(整型不算小数);

TL = (16-(16-6))%4=2;可见结果是一样的。


五、程序设计
例:利用数码管静态显示0到9,每1S钟加一,到9再加1回到0,使用中断程序实现。


分析:一秒钟加一即需要定时1S后才能动作,由于单片机最大定时也只是65536ms,

所以我们需要累加,为了计算方便我们累加20次定时50ms

#include

#define uchar unsigned char 

#define uint unsigned int 

 

uchar code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

uchar num,a;

 

void main()

{

 TMOD=0x01;             //设置定时器0为工作方式1[直接赋值]

 TH0=(65536-50000)/256; //利用取模方式设置初值

 TL0=(65536-50000)%256;

 EA=1;      //打开总中断开关[直接操作寄存器]

 ET0=1;     //打开定时器中断

 a = 0;     //初始化a、num为了程序严谨,也可以去掉

 num = 0;

 TR0=1;     //启动定时器

 

 while(1)

 {

  if(a==20)

  {

   a=0; 

   P1=smg_du[num];

   num++;

   if(num==10)

   {

     num=0;

   }

  }

 }

}

 

void timer0 () interrupt 1  

{

 TH0=(65536-50000)/256; //初值重载,否则下次定时就是65535us而不是50ms

 TL0=(65536-50000)%256;

 a++;                   //50ms中断累加

}


推荐阅读

史海拾趣

GeneSiC公司的发展小趣事

FWBELL公司在电子行业中的五个发展故事

故事一:创立与早期发展

FWBELL公司,全称F.W. Bell Inc.,由Floyd Bell于1944年在美国创立。创立之初,公司专注于设计和制造霍尔发电机,这一创新性的产品迅速在市场中获得了认可。在随后的几十年里,FWBELL始终保持着在测量电流和磁场仪器领域的领先地位。从第一批配备固态电子设备的高斯计,到后续不断迭代的产品线,FWBELL的技术革新推动了整个行业的发展。这段早期的发展历程奠定了FWBELL在电子行业中的坚实基础。

故事二:产品线扩展与全球影响力

随着技术的不断进步和市场需求的扩大,FWBELL的产品线逐渐扩展,涵盖了高斯计、特斯拉计、霍尔元件、霍尔电流传感器以及标准磁铁等多个领域。这些产品凭借其卓越的性能和极高的性价比,在全球范围内赢得了广泛的客户群体。FWBELL的产品不仅被用于商业运输、军事、公务和通用航空等高端领域,还深入到了石油和天然气、工业、医疗以及空间探索等多个行业。这种广泛的行业覆盖进一步提升了FWBELL在全球电子行业中的影响力。

故事三:技术革新与领导地位

FWBELL一直致力于技术革新,不断推出具有领先技术水平的新产品。例如,其高斯计和特斯拉计采用了特有的探头动态补偿技术,确保了量程内的基本精度,并内置软件消除了复杂的校准过程。这些技术创新使得FWBELL的产品在性能上始终保持领先地位。同时,FWBELL还积极参与国际标准的制定和推广工作,为整个行业的发展贡献了自己的力量。

故事四:加入Meggitt集团与资源整合

2010年,FWBELL成为了Meggitt PLC.的全资子公司OECO LLC的一部分。这一战略性的整合为FWBELL带来了更多的资源和支持。Meggitt是一家全球工程集团,专注于为航空航天、国防和能源市场提供极端环境组件和智能子系统。加入Meggitt后,FWBELL得以与其他行业先驱如Securaplane、TFE Electronics和Artus等共同合作,进一步提升了其在电子行业中的竞争力。

故事五:中国市场拓展与本地化服务

近年来,FWBELL积极拓展中国市场,并在中国设立了分支机构以提供更便捷的本地化服务。这些分支机构不仅负责产品的销售和推广工作,还为客户提供专业的技术支持和售后服务。通过与中国本土企业的合作与交流,FWBELL得以更好地了解中国市场的需求变化和技术趋势,从而不断优化其产品和服务以满足客户的实际需求。这一系列的举措不仅加深了FWBELL在中国市场的影响力,也为其在全球范围内的持续发展奠定了坚实的基础。

Banner Engineering公司的发展小趣事

为了进一步扩大市场份额,Banner Engineering公司积极实施全球化战略。公司在全球范围内建立了多个生产基地和销售网络,以便更好地服务客户。同时,公司还积极参加国际电子展会和技术交流会议,与国际同行进行合作与交流,不断吸收新技术和新理念。这些举措使公司的知名度和影响力得到了进一步提升,也为公司的国际化发展奠定了坚实基础。

ERGOBAHCO公司的发展小趣事

ERGOBAHCO公司成立于20世纪90年代初,当时正值电子行业快速发展的黄金时期。公司创始人李明(化名)看准了市场对于高质量电子配件的需求,决定从电子连接器这一细分领域入手。然而,初创时期公司面临着资金短缺、技术落后等诸多挑战。李明凭借对市场敏锐的洞察力,成功争取到了几笔关键的投资,并带领团队攻克了一系列技术难关。通过不懈努力,ERGOBAHCO公司逐渐在电子连接器领域站稳了脚跟。

Cygnal Integrated Products Inc公司的发展小趣事

在20世纪90年代末,Cygnal Integrated Products Inc由几位热衷于微控制器技术的工程师创立。他们看到了嵌入式系统在电子产品中的巨大潜力,并决定专注于开发高性能、低功耗的微控制器。通过不断的技术创新和市场调研,Cygnal成功推出了其首款产品——一款集成了多种外设接口的8位微控制器,受到了市场的热烈欢迎。

Beckhoff Automation GmbH公司的发展小趣事

在电子行业的快速发展中,BCD Semi公司凭借其卓越的技术创新能力,成功研发出了一系列具有竞争力的半导体产品。公司拥有一支经验丰富的研发团队,不断探索新技术和新应用,将最新的科技成果转化为具有市场竞争力的产品。通过技术创新,BCD Semi在行业中逐渐树立起了良好的口碑,赢得了众多客户的信任和支持。

顺芯(Everest-semi)公司的发展小趣事

随着技术的不断进步,顺芯公司意识到只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了在研发方面的投入,积极引进高端人才,并与国内外知名高校和研究机构建立了合作关系。在XXXX年,顺芯公司成功研发出了一款具有自主知识产权的高性能数模混合芯片,填补了国内市场的空白,并获得了多项专利。

问答坊 | AI 解惑

求梅兰日兰UPS中文使用说明书操作手册

求梅兰日兰UPS中文使用说明书 请问哪位师傅手里有梅兰日兰UPS中文使用说明书啊,帮忙给传一下,或者给个网址也行啊,UPS是4.2KW、6KVA,我先谢谢啦!…

查看全部问答>

8051f320上位机编写?

1.怎么向8051f320的usb口发送信号? 我是指pc端的软件编写。 320是会被识别为hid类吗? 用到的api主要有哪些呢?vb vc 的都行啊 最好是vb 2。我要用320实现usb信号转变成串口信号的功能,主要为了解决笔记本缺少com口的问题。方法是从usb接受数据 ...…

查看全部问答>

谁能救命--关于Mplayer中Demuxer处理流程

哪为江湖大虾有研究过播放器Mplayer的原代码啊,特别是它Demux是如何处理的,最好能讲讲Mplayer的主处理函数,和详细的Demux过程?小弟不胜感激!…

查看全部问答>

请教关于伺服电机精度的问题

小弟请问大家有关于伺服电机的问题.有一位做真空镀膜的客户问到我伺服电机的转矩精度和线性度的参数.请问各位高手转矩精度和线性度是什么意义?…

查看全部问答>

stx-rlink要什么价格?有转让的吗,个人用

                                  …

查看全部问答>

Protues-ATmega8仿真

适用于初学者对定时/计数器,串口通信和LED 数码管的学习 [ 本帖最后由 ydw621 于 2011-4-23 12:27 编辑 ]…

查看全部问答>

急,怎么用595芯片驱动一个四位的数码管

本帖最后由 paulhyde 于 2014-9-15 09:28 编辑 …

查看全部问答>

zb_BindDevice失败

// Find and bind to a collector device     zb_BindDevice( TRUE, SENSOR_REPORT_CMD_ID, (uint8 *)NULL );   如果终端设备的父地址为0,即协调器,可以绑定成功   如果终端设备的父地址非0,即路由器,通过 ...…

查看全部问答>

看看如何进不去中断

以下为调试时的截屏,为何就是进不去中断? 在STRATUP.C中注册了中断函数,把函数名写到向量表的TIMER 0  行。 [ 本帖最后由 hb22s 于 2012-6-17 21:11 编辑 ]…

查看全部问答>