www.ysbm.net > 51单片机定时器计算

51单片机定时器计算

51单片机,根据晶振频率,计算指令周期,设置定时器的分频,然后设置定时器的工作方式TMOD,最后设置初值TH0 TL0 比如用的X HZ的晶振,stc的单片机有3种模式(X/12)x/6,还有单周期指令,选择12分频的,T=1/(X/12)就是一个指令周期 ,如果定时没有分频,(65536-Z(初值))*T就是定时的时间 比如是12M的晶振那么 设置TMOD=0x01;16位定时器模式 TH0=(65536-20000)/256; TL0=(65536-20000)%256;就是设置了20ms的定时

51但单片机的定时,要先计算,然后根据要求编写程序,计算会用到公式:t=Tc*(2L-TC)=12/f*(2L-TC) t是定时时间 Tc是机器周期 fs是晶振频率 L是计数器的长度 对于T0,T1有下面三种方式: 方式0:L=13 方式1:L=16 方式2:L=8 对于T2:L=16 然后剩下的就是按照算出的常数编写程序了,就靠你自己了.

呵呵 正确为你解答:1 可以按定时时间的计算公式, 计算出定时器的时间常数X: 定时时间T=(2的N次方-X)12/单片机晶振频率2 N为定时器的工作方式: 方式0时,N=13 方式1时,N=16 方式2时,N=83 根据定时时间和工作方式,计算出时间常数X 把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了. 例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ 则 定时时间T=(2的16次方-X)12/12MHZ=1000 解出 X=64536=FC18H 呵呵 如满意 请选择满意回答

晶振12MHz 时, 定时器计数1 就是1us , 1000就是1ms, 2000就是2ms 因为定时器是计数是往上加的, 所以65536-2000 就是2ms

初值计算就是要算出一个数字,让加上这个数字后,和为65536的时候,触发定时中断.所以一般的计算方法是【65536-定时时长/时钟周期(12M主频时候,频率是1M的,周期1us)】,你这个方法不是单片机的定时方法,是微机原理中的定时赋初值方法.顶下,为人民服务才有热情.

这个其实很简单的,你只需要知道一个条件即可:晶振频率.因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12*10^6)=1us,也就是说计数器没1us计数一次.那么有了这个条件就好办多了,一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能计时65.536ms,则65536减去多少就是定时多少,如(65536-X)/256,就是定时X微秒.那么如果晶振不是12MHz,就要把上述的X乘以12/晶振,得到的值就是定时时长.原理相同.有不懂的地方随时回复我.希望我的回答能帮助到你.

假设单片机的晶振为12M那么时钟周期为1/12M,12个时钟周期为一个机器周期,即时钟周期乘以12,则机器周期为1us,定时器每个机器周期自动加一.那么我们用定时器0的工作方式1.void init_timer0() { TMOD=0x01;//定义定时器的的工作方

定时时间=(2^N-初值)*机器周期;N=定时器位数,如果把初值换成当前计数值,也可以知道后面定时还剩多少时间.不过要取出当前计数值不太容易,而且误差很大.

用延时函数就可以实现; 首先,设置定时器工作方式,也就是TMOD,在设置TH0/1,TL0/1的初值,也就是定时时间的设置,然后设置中断允许,并开中断就可以; 参考例子如下: #include<reg51.h> void main() { TMOD=0X01; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TR0=1; while(1); } void timer0() interrupt 1 { TH0=0X3F; TL0=0XB0; }

呵呵 正确为你解答:1 可以按定时时间的计算公式, 计算出定时器的时间常数x: 定时时间t=(2的n次方-x)12/单片机晶振频率2 n为定时器的工作方式: 方式0时,n=13 方式1时,n=16 方式2时,n=83 根据定时时间和工作方式,计算出时间常数x 把x转换成二进制数,高8位送给th1,低8位送给tl1,就可以启动定时器开始定时了. 例如: 工作在方式1,定时时间为1000微秒 晶振频率=12mhz 则 定时时间t=(2的16次方-x)12/12mhz=1000 解出 x=64536=fc18h 呵呵 如满意 请选择满意回答

友情链接:acpcw.com | zxpr.net | 5689.net | wkbx.net | jamiekid.net | 网站地图

All rights reserved Powered by www.ysbm.net

copyright ©right 2010-2021。
www.ysbm.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com