51单片机——定时器

  • 为什么使用定时器?
  • 定时器原理?
  • 定时器设置
  • 中断配置
  • 源代码

为什么使用定时器?

之前我们的led灯每隔1s循环左移点亮的时候,使用的定时方法是在c程序执行若干次空循环,这样会耗费很多cpu资源,因为空轮询。本篇博客将使用51单片机内置的定时器+中断系统完成循环左移LED灯。
想一个问题:为什么中断不耗费cpu资源,或者说没那么耗费
其实问题的答案很简单:因为发生中断的时候,cpu把当前任务放到等待队列里,然后去调用相应的中断处理程序,处理完中断后再从等待队列把进程丢到工作队列抢占cpu资源。类似的设计思路其实很多,比如java的AQS.

定时器原理?

51单片机内部有一个12MHZ的晶振

我们算一下:hz是频率单位,它是每秒钟的周期性变动重复次数的计量。
即时钟周期=1/(12M) (s)= 1/12/1000/1000 (s) = 1/12 us
51单片机一个指令周期是12个时钟周期,即指令周期=12*1/12 us = 1us
51单片机定时器0内部有两个寄存器TH0和TL0,都是一字节的,理解位定时器0高位寄存器(TH0),定时器0低位寄存器(TL0), 我们知道2字节最大能存65535。
每过一个指令周期(1us),寄存器的值+1,当加到溢出后发出一个溢出中断,我们程序可以捕获到这个中断,就可以知道此时经历了(65535+1)us。
如果我们要定时1ms,可以这样做,设置寄存器的初值为64536,这样到溢出值65536就正好1ms。

定时器设置

我们这使用定时器0,具体可以参考STC89C52文档

TCON寄存器(可位寻址,后缀为1的是定时器1的配置,不用管)
TF0 = 0; //清除TF0溢出中断标志,加到65536后TF0会被置为1
TR0 = 1; //允许定时器0计时
IE0和IT0不用管,需要的话自己去看文档

TMOD寄存器(不可位寻址)

定时器1的不用配置,定时器0配置如下
GATE=0:这个看电路图就知道为啥给0(不需要管INT0是啥)
C/T=0:0代表用作定时器,1代表用作计数器
M1=0,M0=1。M1和M0这样设置代表使用模式1,即TH0和TL0两个寄存器都使用
TMOD=0x01

TH0和TL0
TL0=64535%256+1;
TH0=64535/256;
//距离65535差1000,一次1us,1000次就是1ms

中断配置

定时器的配置就配置好了,现在还要配置中断处理的配置
//中断配置
ET0=1; //enable time0 interrupt
EA=1; //enable global interrupt switch
PT0=0;//低优先级

中断处理程序

源代码

#include <REGX52.H>
#include <INTRINS.H>unsigned char keyNum;void Timer0Init(void){//为了不干扰定时器1//TMOD &= 0xF0;        //设置定时器模式//TMOD |= 0x01;     //设置定时器模式TMOD = 0x01;//TL0低8位,TH0高8位TL0=64535%256+1;TH0=64535/256;//距离65535差1000,一次1us,1000次就是1ms//TCON配置TF0 = 0;        //清除TF0标志TR0 = 1;       //定时器0开始计时//中断配置ET0=1; //enable time0 interruptEA=1; //enable global interrupt switchPT0=0;//低优先级}void main()
{P2=0xFE;Timer0Init();while(1){}
}void Timer0_Routine() interrupt 1{static unsigned int c = 0;TL0=64535%256+1;TH0=64535/256;c++;//500msif(c>=500){c=0;//循环左移P2=_crol_(P2,1);  //LED输出}}

结果展示

51单片机定时器控制LED循环左移

51单片机——定时器相关推荐

  1. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  2. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  3. 51单片机定时器(T0/T1)的使用与配置流程

    第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...

  4. 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...

  5. 51单片机定时器秒计数时钟+Proteus仿真

    51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...

  6. 51单片机定时器初值计算以及初值计算软件

    51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...

  7. 51单片机定时器/计数器(定时器中断)

    51单片机定时器/计数器(中断系统:定时器中断) 实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1.51单片机定时器原理 定时器实质上就是一个加1 ...

  8. 【51MCU】51单片机定时器中断写MIDI音乐(按键可切换音乐)

    Author: Manba Cople 专业:IOT 说明:记录和输出学习内容 文章目录 前言 定时器 音乐播放 音乐库 总结和展望 前言 程序思路:该程序是利用51单片机的定时器中断,另外根据音符的 ...

  9. 51单片机定时器及其应用(2)(测量脉冲宽度)

    51单片机定时器及其应用(2)(测量脉冲宽度) 上一篇文章讲了如何使用51单片机的定时器功能制作一个简易的数字钟,上次有一个GATE位没有涉及到,因此这次来介绍一下定时器的这个GATE位的应用,也就是 ...

  10. 51单片机定时器及其应用(3)(测量脉冲频率)

    51单片机定时器及其应用(3)(测量脉冲频率) 前面介绍了定时器的一般应用以及定时器GATE位的应用,还有一个位没有介绍,那就是定时器C/TˉC/\bar{T}C/Tˉ位.前面讲解定时器时总是写作定时 ...

最新文章

  1. Binder相关面试总结(一):为什么Android要采用Binder作为IPC机制?
  2. 字符编码笔记:ASCII,Unicode和UTF-8
  3. 【转】 ASP.NET 3.5中使用新的ListView控件
  4. 成功解决WARNING:tensorflow:From :read_data_sets (from tensorflow.contrib.learn.python.learn.
  5. 线性表实现一元多项式的表示及相加(C语言实现)【线性表】
  6. 如何设计企业内部的数据平台?
  7. binarySearch与IndexOf的那些事儿~
  8. 三级分类菜单的数据库设计
  9. JoinPoint的用法
  10. python程序的name属性作用是什么_python __name__ == ‘__main__’详细解释+例子
  11. bootstrap----表格
  12. 软件开发高手须掌握的4大SQL精髓语句(综合篇)
  13. arcgis支持python3吗_常见问题解答:ArcGIS 中使用的 Python 是什么版本?
  14. java自定义sql查询条件_mybatis-plus QueryWrapper自定义查询条件的实现
  15. 通达信 移动平均算法_财富趋势,它的产品叫通达信
  16. phpwamp mysql_PHPWAMP配置修改与Web服务器和php以及mysql的具体配置修改
  17. EXCEL 统计每日订单量(拉勾教育数据分析实战训练营学习笔记)
  18. 米聊之死 雷军的“猪”折了腿?
  19. poj1753Flip Game
  20. 为App签名(为apk签名)

热门文章

  1. matlab seawater,seawater Matlab seawater工具包 联合开发网 - pudn.com
  2. 基于单片机PID算法温度控制系统设计(毕设)
  3. SpringBoot 多语言切换
  4. 计算机文化基础十一版百度云,计算机文化基础(高职高专版 第十一版)第一章答案...
  5. SP刷机工具错误信息
  6. Ipad投屏到windows工具推荐
  7. 计算机外设解决方案,瑞昱在2007 IDF上展出多款计算机外设产品解决方案
  8. 操作系统指纹识别(基于kali)
  9. et99php,加密锁/加密狗ET199(包含网络锁功能)
  10. 大华设备播放过程中设置播放速度