51单片机的定时器延时计算
2016-08-30 18:02
886 查看
定时器延时的计算
定时器延时的计算先要确定以下几个值:1.确定时钟周期、机器周期。
时钟周期由单片机的晶振频率Fclk决定。那么时钟周期就是1/Fclk(比如:11.0592MHz)。确定单片机的机器周期是n个时钟周期(n在51单片机下一般是12)。
2.确定需要单次定时器最大的计时时间长度
如果是16位的计数器,16位最大值是65535,共可计数65536次。如果是8位最大值是255,共可计数256次,12 * 65536/11059200 = 0.0711s,也就是说单次定时时间不超过71 ms
3.确定计数器初始值
先确定每一次要定时的时间长度,比如xms (注意不要超过步骤2的单次定时最长时间), 那么计数器的初始值如下: TH0=(65536-Fclk/1000/n*x)/256; //注意:这里的除以1000是认为Fclk的单位是MHz TL0=(65536-Fclk/1000/n*x)%256;
51单片机定时器示例代码,每1秒钟 P1口电平翻转
#include <stdio.h> #define Fclk = 11059200UL //11.0592MHz typedef unsigned int uint16; void main(void) { uint16 counter; TMOD &=0xF0; TMOD |= 0X01; TH0=(65536-Fclk/1000/12*10)/256; //定时间隔为10ms TL0=(65536-Fclk/1000/12*10)%256; TR0 =1; while(1) { if(TF0 == 1) { TF0 = 0; TH0=(65536-Fclk/1000/12*10)/256; TL0=(65536-Fclk/1000/12*10)%256; counter++; } if(counter == 100) { counter = 0; P1 = ~P1; //每1秒钟P1口电平翻转 } } }
相关文章推荐
- 51单片机定时器初值计算
- 51单片机汇编延时计算详细分析
- 51单片机基于定时器0的硬件延时代码
- 51单片机定时器初值计算
- 奶爸业余单片机学习之:定时器以工作方式1运行时的初值的计算方法(51单片机)
- 【51单片机】延时函数计算问题以及如何准确延时
- 51单片机延时计算
- 51单片机定时器初值的计算
- 51单片机定时器初值的计算
- 51单片机的延时及定时器
- 51单片机基于定时器0的硬件延时代码
- 51单片机之定时器
- Android中几种常用的定时器和延时方法
- linux之延时及内核定时器的使用
- 关于定时器或计数器的初值计算
- Angular 定时器$timeout和$interval,延时调用
- CCS7.2软/硬件断点设置,精确计算代码运行时间及定时器定时时间验证(适用于C28x芯片)
- 51单片机学习笔记【四】——定时器和中断系统
- STM32Cubemx下实现通用定时器微秒级延时
- STM32上使用UCOSII--软件定时器和任务延时