51单片机的定时器延时计算

原创 2016年08月30日 18:02:28

定时器延时的计算

定时器延时的计算先要确定以下几个值:

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口电平翻转
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android屏幕分辨率,颜色、像素的使用(技巧)(必看)

一、颜色Android中颜色是由透明度(alpha)和红绿蓝(RGB)定义的,两种编码方式: 1、八位十六进制数,例如FFEEDDCC,FF代表透明度(完全不透明),EE代表红色(值越大红色越深),...

Android之在IntentService中执行后台程序

说明——关于四大组件之一的Service,对它的基本用法不熟悉的可以去看看这个博客!Service完全解析除非我们特别为某个操作指定特定的线程,否则大部分在前台UI界面上的操作任务都执行在一个叫做UI...
  • jxq1994
  • jxq1994
  • 2016年09月21日 22:49
  • 780

51单片机汇编延时时间精确计算

  • 2010年08月25日 12:44
  • 44KB
  • 下载

51单片机延时程序计算

  • 2013年03月16日 13:01
  • 29KB
  • 下载

51单片机c语言精确延时

void delay2(unsigned char i)        {         while(--i);          }  为最佳方法。 分析:假设外挂12M(之后...

51单片机的C语言延时的一些总结

在网上搜了一些关于C51单片机C语言的精确延时(相对)的例子和方法 现总结如下: 1,_nop_()   适用于us级的少量延时 标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几...

20120725-51单片机IO口模拟串口通讯1-延时法

最近因工作需要,研究了一下单片机IO口模拟串口通讯的相关知识。相关内容主要参考了网上《51单片机模拟串口的三种方法》和《单片机IO口模拟串口程序(发送+接收)》两篇文档,并动手做了一下实验。感受颇多。...

51单片机汇编延时分析:

延时函数: DELAY: MOV R7, #250 ;(1)D1: MOV R6, #250 ;(2) D2: DJNZ R6, D2 ;(3) DJNZ R7, D1 ...

51单片机延时函数

C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振...
  • zjc156m
  • zjc156m
  • 2013年07月16日 14:18
  • 845

【51单片机】延时函数计算问题以及如何准确延时

几种周期介绍 周期名称 描述 时间 振荡(时钟) 单片机提供时钟脉冲信号的振荡源的周期 T=1/f 状态 振荡周期经二分频后得到的 2T 机器 在一个机器周期内,CPU可以完成一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:51单片机的定时器延时计算
举报原因:
原因补充:

(最多只允许输入30个字)