以下程序为89C52单片机的定时器T0,T1,T2定时1ms

第一份代码为三个定时器的初始化

#include <reg52.h>void Timer0_Init()     //定时器0方式一,配置1ms中断的函数
{TMOD &= 0xF0;TMOD |= 0x01;      //配置定时器0方式一,这样设置不影响定时器1的配置
//  TH0 = 64536/256;   //定时1ms,高8位(65536-1000)/256
//  TL0 = 64536%256;   //定时1ms,低8位(65536-1000)%256,这个不够精准,实际应该是(65536-1000)%256+1TH0 = 0xFC;TL0 = 0x18;TF0 = 0;          //清除TF0标志TR0 = 1;          //定时器0开始计时EA = 1;              //开总中断ET0 =1;              //开定时器0中断PT0 = 0;          //中断优先级,0为低优先级,1为高优先级
}void Timer1_Init()     //定时器1方式一,配置1ms中断的函数
{TMOD &= 0x0F;TMOD |= 0x10;      //配置定时器0方式一,这样设置不影响定时器1的配置TH1 = 0xFC;TL1 = 0x18;TF1 = 0;          //清除TF1中断标志TR1 = 1;        //启动定时器1EA = 1;            //开总中断ET1 =1;              //开定时器1中断PT1 = 0;          //中断优先级,0为低优先级,1为高优先级
}void Timer2_Init()     //定时器2,配置1ms中断的函数
{RCAP2H = TH2 = 0xFC; RCAP2L = TL2 = 0x18; TF2 = 0;           //清除TF1中断标志TR2 = 1;        //启动定时器1EA = 1;            //开总中断ET2 =1;              //开定时器1中断PT2 = 0;          //中断优先级,0为低优先级,1为高优先级
}

第二份代码为main.c文件中使用定时器实现三个LED闪烁

#include <reg52.h>
#include "Timer.h"sbit led1 = P0^1;
sbit led2 = P0^2;
sbit led3 = P0^3;void main()
{Timer0_Init(); Timer1_Init();  Timer2_Init();while(1){}
}void Timer0_Routine() interrupt 1
{static unsigned int T0count;TH0 = 0xFC; //重新赋初值TL0 = 0x18;T0count++;if(T0count >= 1000){T0count = 0;led1 = ~led1;}
}void Timer1_Routine() interrupt 3
{static unsigned int T1count;TH1 = 0xFC; //重新赋初值TL1 = 0x18;T1count++;if(T1count >= 1000){T1count = 0;led2 = ~led2;}
}void Timer2_Routine() interrupt 5 using 1
{static unsigned int T2count;TF2 = 0;T2count++;if(T2count >= 1000){T2count = 0;led3 = ~led3;}
}

52单片机定时器0-2实现1ms定时相关推荐

  1. 52单片机定时器2使用(C语言程序)

    本文是关于52单片机定时器计数器2做为普通的16位自动重装定时器使用,类似于定时器计数器0和定时器计数器1工作在方式1下.以下程序在Keil 2和Keil 3下调时通过,下载在本校的实验板上达到预期效 ...

  2. 单片机中断程序实例_单片机定时器中断实现长时间定时程序

    单片机定时器中断实现长时间定时程序 #include // 包含51单片机寄存器定义的头文件 sbit D1=P2^0; //将D1位定义为P2.0引脚 unsigned char Countor; ...

  3. 单片机定时器0,TH0和TL0初值的计算

    单片机定时器0,TH0和TL0初值的计算 2018年12月16日 13:09:04 92年程序员 阅读数:1791 以晶振12MHZ为例: 可以得到: TMOD=0x01; TL0=0xb0; TH0 ...

  4. 52单片机——定时器2详解

    文章目录 前言 一.定时器2简述 1.定时器2的作用 2.定时器和计数器的区别 二.定时器2功能详解 1.捕获 1.1.什么是捕获 1.2.捕获的工作原理 1.3.捕获模式 2.自动重装模式(递增/递 ...

  5. 51单片机 定时器0中断实现1秒LED流水灯

    使用定时器0中断实现LED1秒的流水灯 #include <reg52.h> typedef unsigned int u16; typedef unsigned char u8; u8 ...

  6. 51单片机定时器0控制蜂鸣器

    我们不能直接使用单片机的 IO 口驱动,因为 51 单片机 IO 口的驱动能 力较弱(即使外接上拉电阻),而蜂鸣器驱动需要约 30mA,所以非常困难,即 使可以驱动,那对于整个芯片的其它 IO 剩下驱 ...

  7. 单片机定时器精准定时_8051单片机(STC89C52)定时器实现10ms精准定时

    8051内部集成了2个16bits的计数器, 可以根据需要将其作为定时器使用. 这时, 定时器的计数频率为系统CLK/12. 如果CPU的晶振频率为12MHz, 那么定时器信号源的频率固定为12MHz ...

  8. 单片机定时器_51单片机的定时器如何计算初值?

    在学习单片机的时候,我们发现很多功能都是通过中断来实现的.之前也举过烧水的例子来阐述中断,今天就讲解一下定时器赋初值的方法.8位的定时器最大可计数2的8次方为256,16位的定时器最大可计数2的16次 ...

  9. 单片机消抖c语言程序,基于单片机定时器软件消抖C51程序研究

    向兵 杨述凯 摘 要:随着电子技术的发展,单片机的应用在教学及科技开发中越来越普遍,而针对单片机的开发环境而言,大多采用C51语法进行设计.按键的使用在大多数硬件设计里相当频繁,而按键的干扰处理可以使 ...

最新文章

  1. eclipse集成mybatis的generater插件
  2. 多伦多大学和清华大学创新创业论坛,数据科学研究院建言献策
  3. POJ - 2135 Farm Tour(最小费用最大流)
  4. Soul网关发布2.2.0 | 让高性能网关变得如此简单!
  5. Ubuntu 16.04 安装网易云音乐
  6. win7怎么把计算机放到桌面6,win7系统如何设置更改桌面图标?
  7. 文本生成,文本数据增强怎么做?
  8. 23位子网掩码是多少_24位子网掩码,多少个IP地址
  9. ipad iphone开发_如何通过Chromecast观看iPhone / iPad视频?
  10. 监测 Windows 应用行为
  11. python 编码gbk_python 处理中文文件时的编码问题,尤其是utf-8和gbk
  12. 利用Eigen库实现最小二乘拟合平面
  13. 怎样用VR看分频视频?
  14. 基于词表和N-gram算法的新词识别实验
  15. 深度搜索迷宫问题(C语言实现)
  16. 医学院交换去计算机学院,2017年北京协和医学院阜外心血管病医院823计算机原理考研强化模拟题...
  17. 10005 内联函数
  18. 【推荐算法】探索与利用
  19. vsCode git 操作提示 Permission denied, please try again
  20. 程序员:不是所有的程序员称为程序员!

热门文章

  1. linux网络协议栈ip_rcv
  2. [blockchain-042]eos 硅谷ecs docer编译 mongo存储
  3. BPMN 2.0规范
  4. 山东高中学业水平考试时间2020计算机,2020年山东省高中学业水平等级考试报名时间及科目...
  5. 背诵考研英语单词计划总览
  6. 【SDOI2008】Sandy的卡片 DP
  7. tomcat安装以及部署jpress
  8. 日本关西信息中心:LPWAN技术ZETA、LoRaWAN、SIGFOX测评分析
  9. 2000 Followers-3D CSS text
  10. 应届大学生从Java培训班学完好就业吗?