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
- 晶振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;
}
}
定时器与延时的区别
- 延时
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的采样计算公式分别是啥?