单片机定时器定时的时间怎么算?

比如我要定时20ms,这20ms是怎样算出来的?在程序上怎样写?越详细越好。各位大侠帮帮忙……

单片机的定时时间的计算公式=计数值(定时值)* 机器周期= 计数值(定时值)* 12 / 晶振频率。

上面的两个等号是等价的,因为,单片机的机器周期=12秒/晶振频率,因此两个公式通用。

完成一个基本操作所需要的时间称为机器周期。一般,一个机器周期由 若干个S周期(状态周期)组成。80C51系列单片机一个机器周期由6个S周期组成。一个S周期(状态周期),由2个时钟周期组成。

若干个机器周期,组成了指令周期。根据指令不同,所需的机器周期数也不同。

扩展资料

几种典型指令;

1、单字节周期指令(比如 INC A)

2、双字节单周期指令(比如 ADD A,#data)

3、单字节双周期指令 (比如 INC  DPTR)

4、单字节双周期指令 (比如MOVX A @DPTR)

参考资料来源:《单片机初级教程 单片机基础》 张迎新 杜小平 等编著  北京航空航天大学出版社

第三章 单片机的结构及原理  3.5 CPU时序及时钟电路

参考资料来源:百度百科--机器周期


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-16
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的定时本回答被提问者采纳
第2个回答  2013-09-21
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。
第3个回答  2011-09-28
先看你用的几M晶振,然后设置定时器的工作方式TMOD,最后设置初值TH0 TL0 比如用的X HZ的晶振
那么T=1/(X/12)就是一个机器周期 ,(65536-Z(初值))*T就是定时的时间
比如是12M的晶振那么 设置TMOD=0x01;
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;就是设置了20ms的定时
第4个回答  2011-09-28
计算机内部的时间,是按照机器周期的个数来计算的。
和单片机的晶振频率有关。