51单片机定时器初值计算以及初值计算软件

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机定时器初值计算以及初值计算软件相关的知识,希望对你有一定的参考价值。

51单片机定时器初值计算以及初值计算软件

不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题
在这里插入图片描述

51单片机定时器初值计算部分

  • 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在单片机中也就等于晶振频率的倒数。

eg:12M晶振的单片机,时钟周期=振荡周期=1/12 us。

  • 机器周期:定义为完成一项基本操作所需要的时间,称为机器周期。
  • 51单片机中1个机器周期由6个状态周期组成,也就是12个时钟周期=12 x 1/12 us =1 us
  • 一个机器周期的时间是1us,如果要延时1ms就是1000个机器周期.
  • 定时器/计数器有4种工作方式

– 方式0:2^13
– 方式1:2^16
– 方式2:2^8
– 方式3:双8位

  • 计数器的初值X = 计数器最大计数值M - 预装载值

计数器最大计数值M,就是根据工作方式0-3的选择不同而决定的最大计数值。

10MS定时器初值的计算:

1. 晶振12M

12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。
65536-10000=55536(d8f0)
TH0=0xd8,TL0=0xf0

2. 晶振11.0592M

11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。
65536-9216=56320(dc00)
TH0=0xdc,TL0=0x00

  • 50MS定时器初值的计算:

1. 晶振12M

12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。
65536-50000=15536(3cb0)
TH0=0x3c,TL0=0xb0

  1. 晶振11.0592M

11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。
65536-46080=19456(4c00)
TH0=0x4c,TL0=0x00

使用说明

以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。

开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。

  • 对12MHz 1个机器周期 1us 12/fosc = 1us

– 方式0 13位定时器最大时间间隔 = 2^13 = 8.192ms

– 方式1 16位定时器最大时间间隔 = 2^16 = 65.536ms

– 方式2 8位定时器最大时间间隔 = 2^8 = 0.256ms =256 us

定时5ms,计算计时器初值 M = 2^K-X*Fosc/12 12MHz

方式0: K=13,X=5ms,Fosc=12MHz 则 M = 2^13 - 5*10(-3)*12*106/12= 3192 = 0x0C78
THx = 0CH,TLx = 78H,

方式1: K=16,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10(-3)*12*106/12= 60536 = 0xEC78
THx = ECH,TLx = 78H,
50ms 12MHz THx = 3CH,TLx = B0H,
10ms THx = D8H,TLx = F0H,

方式2: 最大时间 2^8Fosc/12 = 0.256ms

以上部分内容来自:http://www.elecfans.com/emb/danpianji/20171109577375.html

void main()
{
TOMD|=0x01;         //设置TMOD工作方式寄存器的M0M1为01,对照表格即为定时器/计数器的4种模式中的16位定时器/计数器模式
    TH0=(65536-46080)/256; //装初值11.0592M晶振定时50ms数为46080
    TL0=(65536-46080)%256;
    EA=1;    //中断总开关
    ET0=1;   //开启定时器/计数器的中断允许位置为1
    TR0=1;   //
    return 0;
}
void T0_time() interrupt 1
{
    TH0=(65536-46080)/256;
    TL0=(65536-46080)%256;
    num++;
    if(num==20)
    {
        num=0;
    }
}
定时器与延时的区别
  1. 延时
    cpu在执行完p1=254之后,cpu又开始执行执行Delay函数。由于cpu执行每条指令的时间是固定的,所以通过一定数量指令的执行,可以实现延时(即让当前的外设状态保持不变,cpu在做无用功);
    在复杂的系统中,与中断相比,延时不准确。因为delay(50000)是0.5s,如果在期间发生了中断,那么时间就不只0.5s了。

51单片机初值计算软件

链接:https://pan.baidu.com/s/1lNwpQFjjl1fDz79BwuFU0w 
提取码:xvha 

以上是关于51单片机定时器初值计算以及初值计算软件的主要内容,如果未能解决你的问题,请参考以下文章

单片机AD采样,10位AD和12AD的采样计算公式分别是啥?

8051单片机串口波特率和定时器1的初值计算

编程题 设MCS-51单片机系统中晶振频率为12MHz,欲使用定时器/计数器1,采用方式1编写实现1秒定时时间的程

51单片机控制舵机转角的C语言程序

mysql 计数器 计算不重复

怎么用51单片机来实现pwm调节占空比