EA     是 中断总开关, 不管是定时器,串口还是外部中断,都需要打开 EA 才能触发中断;

ET0   是 定时器0 的专用中断开关, 也就是说: 打开了EA.而不打开ET0,定时器0是无法触发中断的;

TR0   是 启动定时器开始定时计数 的开关,如果打开 EA 和 ET0, 就代表允许定时器 0 触发中断, 但是定时器0 何时开始触发,由 TR0 来启动和停止.

51 单片机 12 分频,

一个 机器周期 = 12/nHz   //(n指 晶振频率)

如要定时的时间为 M

初值  = M / 机器周期;

TH0 = (65536 - 初值) % 256; // 高 8 位;

TL0 = (65536 - 初值) / 256;   // 低 8 位;

案例:

12M 晶振 做 1ms 定时计算

1. 机器周期: = 12 /(12*10^6)=1us(微秒)

2. 定时初值:(1*10^-3)/(1*10^-6) = 1ms/1us = 1000; (倍率)

将 高 位 与 低位 进行分离;转化成 16进制 数据;

3. TH0 = (65536 - 1000) % 256 = 64536 % 256 (10 进制数) --> 0xFC

3. TL0 = (65536 - 1000) / 256 = 64536 / 256 (10 进制数) --> 0x18

每次内部 自加 1bit 时,耗费 1us; 所以,要累加 1000 次,形成 1ms 中断溢出;

//定时器 初始化函数

void Init_Timer()

{

count = 0;                                // 用于 中断后 计数,判断;

TMOD = 0x01;                            //T0 工作方式 1;16位 计数器;

TH0=(65536-50000)/256;          // 初值高 8 位 走 1000 次,每次 1us :晶振 12MHz;

TL0=(65536-50000)%256;         // 初值低 8 位 走 1000 次,每次 1us :晶振 12MHz;

TR0  = 1;                                  // 开启 T0 定时器;

ET0  = 1;                                  // 允许 T0 定时器中断;

EA   = 1;                                 // 开启 总中断 允许;

}

// 中断函数;

void Timer0(void) interrupt 1 using 1

{

TH0 = (65536-50000)/256;    // 中断后,赋初值;

TL0 = (65536-50000)%256;

count++;       // 每次中断,计数 累加 1;

if(count >=某个值时)

{

count = 0; // 计数值 清0 ;

// 控制体;

}

}

单片机定时报警C语言程序,51单片机 定时器 中断程序 (C语言)相关推荐

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

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

  2. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h>   void main(void)   {    EA=1;      //开放总中断 ...

  3. 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...

    51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...

  4. c51c语言编程的音乐程序,51单片机唱歌C51音乐程序.doc

    51单片机唱歌C51音乐程序 51单片机唱歌 C51音乐程序 unsigned char n 0; //n为节拍常数变量 unsigned char code music_tab[] 0x18, 0x ...

  5. 【C 语言实现51单片机计时器】

    C语言实现51单片机计时器 代码如下 接线如下 代码如下 #include <reg51.h>sbit Hc38A=P2^2; sbit Hc38B=P2^3; sbit Hc38C=P2 ...

  6. 《电子DIY》之《单片机实践项目》之(51单片机)proteus中带编码信号的电机的详细讲解及电路图绘制(motor encoder)

    此课程主要讲解如何使用51单片机进行实战应用,分为多次课,每次课都会分别围绕一个课程设计或毕业设计(实践项目)展开.手把手叫你学51单片机."Proteus仿真","电子 ...

  7. 单片机原理与实践学习记录之51单片机I/O口简单应用

    单片机原理与实践学习记录 第二课(更新时间:2021.9.3) 51单片机I/O口简单应用 C51中常用的头文件 ​ 通常有reg51.h,reg52.h,math.h, ctype.h, stdio ...

  8. 基于51单片机的太阳能追光系统 基于51单片机的锂电池太阳能充电器

    基于51单片机的太阳能追光系统 基于51单片机的锂电池太阳能充电器 基于51单片机的锂电池追光充电系统 具体功能:根据太阳光照方向改变光板朝向,利用太阳能给锂离子电池充电,实时显示上下左右四个方向不同 ...

  9. 《电子DIY》之《单片机实践项目》之基于51单片机+光敏电阻的简易光照强度测量系统设计电路图绘制及讲解

    <电子DIY>之<单片机实践项目>之基于51单片机+光敏电阻的简易光照强度测量系统设计电路图绘制及讲解 添加链接描述

  10. M40 定时器 中断程序形象化理解

    框架与要点 编写单片机类的程序,最核心.最重要的是上面的框架. 硬件支持:单片机 软件框架 初始化代码 时钟配置 定时器配置 中断配置 功能代码 通过此框架我们会明白,初始化代码是重中之重.实际初始化 ...

最新文章

  1. R密度聚类之DBSCAN模型
  2. Docker - 安装
  3. insertAdjacentHTML方法详解
  4. 5G 在轨道运输网络中的需求
  5. python3.8.5 应用程序无法启动-macos python3.8.5 打开摄像头问题
  6. 像证券交易员一样思考和行动_3纪律与心态
  7. svn教程----示例二:测试人员拥有读权限
  8. python自建模块导入_Python模块的使用及自建模块的导入方法举例
  9. 深入理解PHP异常和错误处理(6)PHP如何优雅的处理错误
  10. 四因素三水平正交试验表_测试用例设计方法(二)——正交实验法
  11. Kibana安装配置
  12. H3C FTP配置示例
  13. seleniuim面试题1
  14. 新手引导动画的4种实现方式 1
  15. mybatis动态sql片段与分页,排序,传参的使用与一对多映射与resultMap使用
  16. java编程比赛_[阶段一]java基础编程比赛
  17. 语音识别—声学模型训练(Viterbi-EM)
  18. 计算机代表学校拿什么奖,学校荣获第十届中国大学生计算机设计大赛优秀组织奖...
  19. isis和ospf比较
  20. PHP常用的文件操作函数集锦

热门文章

  1. php 扩展包是什么意思,大家知道扩展用户组是什么意思么??
  2. linux grub设置cpu频率,Linux:使用性能调控器时,为什么CPU频率会发生波动?
  3. python中的__str__ __name__ 和__call__方法
  4. Python的序列化与反序列化
  5. python 将文件描述符包装成文件对象
  6. mysql+用户批量导出,python批量导出导入MySQL用户的方法
  7. C语言什么时候必须用到二级指针?(需要调用函数为一维空指针确定值的情况下,需要传入二维指针,也就是那个一维指针的指针)
  8. 目标检测中准确率accuracy的计算(precision是精度、查准率)(Recall是召回率、查全率)
  9. 博本 微型 电脑 linux,博本电脑下载与安装Windows7iso镜像系统教程
  10. Java动态代理详解(Proxy+InvocationHandler)