单片机小精灵t2_51单片机定时器T2初始化设置
http://blog.csdn.net/wodejiaoao/article/details/5461921
2010
单片机T2定时器实现1秒精确定时程序
/********************************************************************************************
* 文 件 名:test.c
* 功 能:使用T2定时器实现1秒精确定时并闪灯
* 1.CPU型号:AT89S52
* 2.晶振:12.000MHz
*********************************************************************************************/
#include "reg52.h" // 包含头文件
#define uint unsigned int
#define uchar unsigned char
sbit P1_7 = P1 ^ 7; // 定义位变量
/********************************************************************************************
* 函数名称:Timer2_Server()
* 功 能:定时器2溢出中断。
* 入口参数:无
* 出口参数:无
* 注 意:在本函数中设置了一个静态变量Timer2_Server_Count,静态变量的值在进入函数时是不会被
* 初始化的,而是保持上次的值。它用来计数T2定时器的溢出次数(进入本函数的次数),每
* 溢出16次,就控制一次LED11反转显示。这时的时间正好是1秒,而且是精确的1秒!只与晶振
* 的精度有关。
*********************************************************************************************/
void Timer2_Server(void) interrupt 5
{
static uint Timer2_Server_Count;
// 定义静态变量,用来计数T2定时器的溢出次数(进入本函数的次数)
TF2=0;
// T2定时器发生溢出中断时,需要用户自己清除溢出标记,而51的其他定时器是自动清除的?
Timer2_Server_Count++;
if(Timer2_Server_Count==16) // T2定时器的预装载值为0x0BDC,溢出16次就是1秒钟。
{
Timer2_Server_Count=0;
P1_7=~P1_7; // LED11反转显示。
}
}
/********************************************************************************************
* 函数名称:main()
* 功 能:使用T2定时器实现1秒精确定时并使LED11闪灯,即LED11亮1秒,灭1秒,亮1秒,灭1秒......
* 注 意:
* 1、要精确定时,必须使用定时器的自动装载方式。本实验使用T2定时器,让它工作在16bit自动
* 装载方式,这时,有另一个位置专门装着16位预装载值,当T2溢出时,预装载值立即被装入,
* 这就保证了精确定时。
* 2、T2定时器是一个16位定时器,最长的溢出时间也就几十毫秒,要定时1秒,就需要用一个变量
* 来保存溢出的次数,积累到了一定的次数后,才执行一次操作。这样就可以累加到1秒或者更
* 长的时间才做一次操作。
* 3、当T2定时器发生溢出中断时,需要用户自己清除溢出标记,而51的其他定时器是自动清除的。
* 4、T2定时器预装载值的计算:
* 设晶振为12MHz,每秒钟可以执行1000000(12000000/12)个机器周期。而T2每次溢出时最多
* 经过了65536个机器周期。我们应该尽量让T2定时器的溢出中断的次数最少,这样对主程序的干扰
* 也就最小。
* 选择每秒中断14次,每次溢出1000000/14=71428.57个机器周期,不为整数且超出65536个机器周期,有效。
* 选择每秒中断16次,每次溢出1000000/16=62500个机器周期,小于65536个机器周期,有效。
* 选择每秒中断20次,每次溢出1000000/20=50000个机器周期,小于65536个机器周期,有效。
* .
* .
* .
* 通过上面的计算,我们可以发现,我们可以选择的方式有很多,但是最佳的是每秒中断16次,每次
* 溢出62500个机器周期,那么赋给T2定时器的初值应为65536-62500=3036,转换成十六进制值为
* 0x0BDC。
*********************************************************************************************/
void main (void)
{
P1_7=1; // LED11灭
/* T2定时器赋预装载值,溢出16次就是1秒。 */
RCAP2H=0x0B;
RCAP2L=0xDC;
ET2=1; // 允许T2定时器中断
EA=1; // 打开总中断
TR2=1; // 启动T2定时器
while(1); // 死循环,等待T2定时器的溢出中断
}
单片机小精灵t2_51单片机定时器T2初始化设置相关推荐
- 单片机小精灵t2_51单片机的最小系统
自己焊的51单片机的最小系统包括:CUP(STC89C52),晶振与谐振电容(22pF,晶振加电容的主要目的是滤波,这样可以使得晶振输出的波形更加平滑),复位电路(最简单的复位电路:电解电容10uF. ...
- 入门51单片机(STC8952RC)定时器、有关中断原理简述、寄存器设置与程序示例(包括流水灯和计时器)
目录 1.单片机之定时器 1.1 STC89C52RC定时器模式1工作流程 1.1.1 计数部分 1.1.2 时钟部分 1.1.3 中断部分 1.2 定时器T0.T1相关寄存器 1.2.1 TCOM寄 ...
- spring 定时器设置停止_单片机MSP430入门-理论⑦--定时器模块-定时器A②
单片机MSP430入门-理论⑦--定时器模块-定时器A② 上期大概给大家汇总介绍了,定时器模块中比较重要并且常用的定时器A,大概说了下定时器A的两种常用模式,比较模式和捕获模式 本期将继续介绍定时器A ...
- AutoLeaders控制组——51单片机学习笔记(定时器、串口通信)
本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...
- PIC16F15323单片机 (中断与定时器Timer0)
PIC16F15323单片机 (中断与定时器Timer0) 1 基本原理 2 实现代码 开发环境选择的是 MPLAB X IDE v5.50和 xc8-v2.32-full-install-windo ...
- PIC16F877A单片机 (中断与定时器Timer1)
PIC16F877A单片机 (中断与定时器Timer1) 1 基本原理 2 实现代码 1 基本原理 上图中,如果RC0左边外接了外部的晶振,那么T1OSCEN必须置一.这个外部的晶振频率一般都比较低. ...
- PIC16F877A单片机 (中断与定时器Timer2)
PIC16F877A单片机 (中断与定时器Timer2) 1 基本原理 2 实现代码 1 基本原理 2 实现代码 主要根据定时器2的逻辑框图和中断的逻辑框图来编写代码,这样代码的可读性强,也便于理解. ...
- 51单片机实现用一个定时器输出可调PWM
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.为什么要用一个定时器实现? 使用步骤 2.代码思路 3.如何改变输出频率和正脉宽 一.调节正脉宽 二.调节频率 使 ...
- 51单片机 (九)定时器
什么是定时器? 定时器是单片机的重要功能模块之一,在检测.控制领域有广泛应用.定时器常用作定时时钟,以实现定时检测,定时响应.定时控制,并且可以产生ms宽的脉冲信号,驱动步进电机.定时和计数的最终功能 ...
最新文章
- 使用SharpPCap在C#下进行网络抓包
- SAP WM Production Schedule Profile设置问题导致生产补货的TO单自动创建问题
- 用户及用户组管理(week1_day4)--技术流ken
- BZOJ1901: Zju2112 Dynamic Rankings
- 一行代码就能解决微服务分布式事务问题,你知道GTS怎么做到的吗?
- C# TCP服务器和客户端
- 利用Resource Hacker简单去除WinRar广告
- word to latex 2.56安装方法
- 加速度传感器灵敏度表示的几种方式LSB/g,count/g,V/g,V/°
- Python 之下划线
- 什么是“海恩法则”?
- What is UTF-8?
- 一起avi文件播放时没有图像问题的解决(tscc.exe)
- I2C总线时序以及ACK和NACK(NAK),SCL被从机拉低?
- Java-判断回文数
- 抽象类DateFormat
- 华硕主板禁用UEFI安全启动(Disable Secure Boot for ASUS Motherboard)
- 2020-3-17课堂笔记
- p u b g服务器维护中是什么意思,数控G71里面P和Q是什么意思,你知道吗?
- 基于Android的网上订餐系统