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

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

几种周期介绍 周期名称 描述 时间 振荡(时钟) 单片机提供时钟脉冲信号的振荡源的周期 T=1/f 状态 振荡周期经二分频后得到的 2T 机器 在一个机器周期内,CPU可以完成一...
  • wait_for_taht_day5
  • wait_for_taht_day5
  • 2016年01月15日 23:52
  • 8815

js 定时器、延时和周期

js 定时器有以下两个方法: setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。setT...
  • u013372487
  • u013372487
  • 2016年02月29日 12:35
  • 2411

51系列单片机延时程序运行时间的计算

  • 2009年07月09日 10:46
  • 234KB
  • 下载

【转】51单片机精确延迟程序

51单片机精确延时程序(晶振12MHz,一个机器周期1us.) 几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响. ...
  • hunterlew
  • hunterlew
  • 2015年04月28日 20:11
  • 1548

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

几种周期介绍 周期名称 描述 时间 振荡(时钟) 单片机提供时钟脉冲信号的振荡源的周期 T=1/f 状态 振荡周期经二分频后得到的 2T 机器 在一个机器周期内,CPU可以完成一...
  • wait_for_taht_day5
  • wait_for_taht_day5
  • 2016年01月15日 23:52
  • 8815

单片机while(--t)延时计算(KEIL调试解读)

先贴上程序#include #define uchar unsigned char void Delay(uchar); //主程序 void main() { while(1) { ...
  • yhcfsr
  • yhcfsr
  • 2016年01月07日 11:09
  • 1392

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

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

单片机延时计算小程序

  • 2012年11月13日 12:06
  • 8KB
  • 下载

单片机延时C语言程序

(晶振12MHz,一个机器周期1us.) 一. 500ms延时子程序 程序:  void delay500ms(void){    unsigned char i,j,k;    for(i...
  • kda_123
  • kda_123
  • 2015年07月31日 22:16
  • 805

单片机两大延时方法总结

实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 ...
  • head555
  • head555
  • 2017年03月25日 10:00
  • 925
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:51单片机的定时器延时计算
举报原因:
原因补充:

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