定时器工作的流程可以按照这个顺序(以51为例用定时器0方式一产生50毫秒的定时)

1、TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。

2、接下来就要设置定时的时间,用定时器定时50毫秒,可以用这种方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65535后就溢出产生中断,至于为什么是对256取整,和取余的话楼主自己先琢磨吧, 不懂再hi我;

3、第三步就要打开中断了,使用IE寄存器,我一般是对各个位进行单独设置,这样看起来感觉更好,首先打开总中断EA = 1,这一步是所有中断所必须的,然后打开定时器0中断,ET0 =1;

4、这时准备工作都准备好了就要开始启动定时器了,使用TCON寄存器,TR0 = 1,到现在为止就实现了一个50毫秒的定时了;

总结一下:TMOD = 0X01; TH0 = (65535 - 5000) / 256; TL0 = (65535 - 50000) % 256; EA = 1; ET0 = 1; TR0 = 1,至于那个中断函数我就不写了,要注意的是方式0 ,1, 3是不能自动重装的,所以得在中断函数中重新对TH0 ,TL0赋初值,楼主说的那个SCON寄存器就是用于串口的,定时器会用了的话,串口也就会了的,希望能够帮助楼主了

51单片机的定时/计数器的概念

单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,只要相邻两个计数脉冲之间的时间间隔相等,则计数值就代表了时间的流逝,因此,单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的。

51单片机的定时/计数器的工作原理

加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。

作为定时器使用时,定时器计数8051单片机片内振荡器输出经过12分频后的脉冲个数,即:每个机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,溢出后继续从0开始循环计数;所以,定时器的分辨率是时钟振荡频率的1/12;

作为计数器使用时,通过引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数,当输入的外部脉冲信号发生从1到0的负跳变时,计数器的值就自动加1由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2微秒。;计数器的最高频率一般是时钟振荡频率的1/24;

由此可知,不论是定时器还是计数器工作方式,定时器T0和T1均不占用CPU的时间,除非定时器/计数器T0和T1溢出,才可能引起CPU中断,转而去执行中断处理程序。所以说,定时器/计数器是单片机中效率高而工作灵活的部件。

由上图可见与定时器相关的寄存器主要有下面这几个:TMOD、 TCON、 TL0、TH0、TL1、TH1。下面介绍一下这几个寄存器

16位加法计数器:

是定时计数器的核心,其中 TL0、TH0、是定时计数器0的底八位和高八位;TL1、TH1是定时计数器1的底八位和高八位;并且高八位和底八位可单独使用。16位加法计数器主要是在设置定时计数器的初值时候使用

TMOD定时器工作模式及方式寄存器

GATE :定时操作开关控制位

当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。

若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。

C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。

M1 M0:T0、T1工作模式选择位

TCON定时器控制寄存器

TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。

TR1:T1充许计数控制位,为1时充许T1计数(定时)。

TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。

TR0:T0充许计数控制位,为1时充许T0计数(定时)。

IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。

IT1:外部中断源1触发方式控制位。此位为1设置为底电平触发,为0设置为下降沿触发。

IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。

IT0:外部中断源0触发方式控制位。此位为1设置为底电平触发,为0设置为下降沿触发。

51单片机定时器4种工作模式

工作模式0:

由TL0的低5位和TH0的全部8位共同构成一个13位的定时器/计数器,定时器/计数器启动后,定时或计数脉冲个数加到TL0上,从预先设置的初值(时间常数)开始累加,不断递增1,当 TL0计满后,向TH0进位,直到13位寄存器计满溢出,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。并且定时器/计数器硬件会自动地把13位的寄存器值清0,如果需要进一步定时/计数,需要使用相关指令重置时间常数,并把定时器/计数器的中断标记TF0置0。

工作模式1:最常用的定时器工作模式

模式1与模式0几乎完全相同,唯一的区别就是,模式1中的寄存器TH0和TL0共同构成的是一个16位定时器/计数器来参与操作,因此比模式0中的定时/计数范围更大

工作模式2: 工作方式2特别适合于用作较精确的脉冲信号发生器。

这种模式又称为自动再装入预置数模式。有时候,我们的定时/计数操作是需要多次重复定时/计数的,如果溢出时不做任何处理,那么,在第二轮定时/计数时就是从0开始定时/计数了,而这并不是我们想要的。所以,要保证每次溢出之后,再重新开始定时/计数的操作是我们想要的,那就要把预置数(时间常数)重新装入某个地方,而重新装入预置数的操作是硬件设备自动完成的,不需要人工干预,所以这种工作模式就叫自动再装入预置数方式。在工作模式2中,把自动重装入的预置数存放在定时器/计数器的寄存器的高8位中,也就是存放在TH0中,而只留下TL0参与定时/计数操作。

这个工作模式常用于波特率发生器(串口通讯),T1工作在串口模式2;用于这种方式时,定时器就是为了提供一个时间基准;计数溢出之后,不需要做太多的事情,只做一件事就可以,就是重新装入预置数,再开始重新计数,而且中间不需要任何延时。

工作模式3:

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数由于定时器/计数器T1没有工作模式3,如果把定时器/计数器T0设置为工作模式3,那么TL0和TH0将被分割成两个相互独立的8位定时器/计数器。

在这里介绍一下定时器初值的设定:

工作方式0:13位定时器/计数器工作模式,最多可计数2的13次方次,即:8192次

工作方式1:16位定时器/计数器工作模式,最多可计数2的16次方次,即:65536次

工作方式2:8位定时器/计数器工作模式,最多可计数2的8次方次,即:256次,

工作方式3:8位定时器/计数器工作模式,最多可计数2的8次方次,即:256次

51 TMOD、TCON设置定时相关推荐

  1. 51单片机c语言定时器程序,51单片机定时器设置入门与程序解析

    89C51单片机有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535. 其次.提供给定时器 ...

  2. c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置

    Q1:请教高人C51单片机C语言中的中断优先级怎么设置? C51中设置中断优先级,需要对中断寄存器IP进行配置.具体值需要根据用户需要的优先级顺序进行确定,具体的设置方法就是直接写如下C语言语句: I ...

  3. 电脑怎么设置定时关机?分享2个简单操作!

    随着互联网时代的发展,越来越多人使用电脑.使用过程中,有时会产生很多疑惑,其中有朋友问小编:电脑怎么设置定时关机?其实Windows系统设置关机很简单,主要有下面两个方法! 演示机型:Dell opt ...

  4. 通过regedt查看计算机密码,win10系统通过注册表设置定时更换密码提醒的处理步骤...

    有关win10系统通过注册表设置定时更换密码提醒的操作方法想必大家有所耳闻.但是能够对win10系统通过注册表设置定时更换密码提醒进行实际操作的人却不多.其实解决win10系统通过注册表设置定时更换密 ...

  5. 如何在BIOS里设置定时关机?

    如何在BIOS里设置定时关机? 通过CMOS设置实现定时开机的设置过程如下:首先进入"CMOS SETUP"程序(大多数主板是在计算机启动时按DEL键进入):然后将光条移到&quo ...

  6. linux定时关机命令_电脑设置定时关机你会吗?Windows自带的这行命令真好用

    如何为自己的电脑设置定时关机或取消定时关机?今天跟大家分享一个Windows系统自带的方法! Windows系统自带了一个名为shutdown.exe的程序,这个程序默认是在C:WindowsSyst ...

  7. win10定时关机c语言,Win10系统怎么定时关机?Windows10设置定时关机的两种方法

    最近,有位刚刚升级win10系统的用户反映自己在使用完电脑后经常会忘记手动关机,因此为了能够更好地保护电脑,希望在新系统中设置定时关机.这该如何操作呢?接下来,小编就向大家分享Windows10设置定 ...

  8. Openlayers中设置定时绘制和清理直线图层

    场景 Openlayers中实现地图上添加一条红色直线: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118598962 在上面 ...

  9. Win7旗舰版系统如何设置定时关机

    Win7旗舰版系统用户每次下班都忘记关电脑,领导说了很多次就是记不住,如果电脑能设置定时关机就好啦,Win7旗舰版系统如何设置定时关机?快来跟着小编一 起学习一下Win7旗舰版系统设置定时关机教程吧. ...

  10. Win7电脑设置定时关机的操作方法

    Win7怎么让电脑定时关机?想必大家一定有遇到过这样的烦恼吧,电脑文件下载到一半或传输到一半的时候,而你有事需外出,关机吧太可惜了,不关机吧又浪费电,还会影响电脑的使用寿命,那么该如何是好呢?这时候选 ...

最新文章

  1. 【数据库】阿里云教你快速掌握SQL语句使用
  2. VC安装证书到指定CSP
  3. 川农在线计算机考试,四川农业大学《计算机应用基础(专科)》20年6月作业考核-答案...
  4. 语音通话框架_普通话考试得高分的方法
  5. maven常见问题归纳
  6. MYSQL小函数大用途之-------FIND_IN_SET
  7. 《软件测试技术实战:设计、工具及管理》—第2章 2.7节测试用例不应该包含实际的数据...
  8. 表格嵌套_HTML |2| 表格与列表
  9. 【Java入门提高篇】Day26 Java容器类详解(八)HashSet源码分析
  10. 第十届中软杯(A2行人追踪)!!!
  11. 群晖Docker部署Calibre Web打造全功能书库
  12. Android广告图片轮播控件banner
  13. Elasticsearch 6.4 ingest-attachment对office文件IK分词器全文检索(1) HttpAPI使用
  14. 学习django教程一
  15. MySQL基础学习(六)——聚合函数
  16. 三态门及数据缓冲器 双向口的用法
  17. 会议panel是什么意思中文_医学术语中的panel到底是什么意思
  18. 我的软件推广成功之路 [转]
  19. 一篇文章带你了解Python中的游戏开发模块pyglet
  20. 我教你两招你也可以,打造个人IP就是个骗局?纯属忽悠?

热门文章

  1. 2020身高体重标准表儿童_2020儿童身高标准表出炉,10岁长到1米4才合格,你家娃达标了吗...
  2. php开发oa系统的插件下载不了,OA系统安装不了office控件的解决方法
  3. kindeditor php 漏洞,KindEditor漏洞、优化以及漏洞、BUG修复方案汇总
  4. ITIL 2011服务管理与认证读书笔记一——IT服务管理与ITIL
  5. UEFI开发与调试---文件操作
  6. php侧边客服,利用jquery实现网页侧边栏在线客服代码
  7. 愤怒的调音师《调音台不思议手记》
  8. mongodb3 重启_“打工人”必备技能 OPPOR9splus重启让手机再战一年|手机|打工人|oppor|splus...
  9. 逆向之汇编(堆栈平衡函数)
  10. 数学建模时序数据分析——趋势性检验和平稳性检验