【单片机】单片机的定时时间是怎样计算?

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

请问以上两个等号是否正确?

谢谢!!

单片机的定时时间的计算公式=计数值(定时值)* 机器周期= 计数值(定时值)* 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-20
单片机定时器定时计算方法
对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*10^6/12= 3192 = 0x0C78
THx = 0CH,TLx = 78H,
方式1: K=16,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78
THx = ECH,TLx = 78H,
50ms 12MHz THx = 3CH,TLx = B0H,
10ms THx = D8H,TLx = F0H,
方式2: 最大时间 2^8Fosc/12 = 0.256ms
十进制数是怎么来的?
6MHz 一个机器周期 12/6 = 2us
定时1ms 计数初值x
(2^16-x)*2us = 1000us
x = 2^16 - 500 ,TH,TL 可置 -500

12MHz 一个机器周期 12/12 = 1us
12MHz 一个机器周期 12/12 = 1us
定时50ms 计数初值x
(2^16-x)*1us = 50000us
x = 2^16 - 50000 ,TH,TL 可置 -500

定时器 计内部晶振频率
计数器 计外部输入CPU脚上的脉冲个数 P3.4(T0) P3.5(T1) 负跳变加一
当晶振为6MHz时,最高计数频率500KHz

寄存器
1 TH TL
2 TCON
TR0 TR1 其他位是中断控制位
TMOD
GATE C/T1 M1 M0 GATE C/T0 M1 M0
C8051F00X
定时器:每个时钟加1 时钟可为系统时钟或系统时钟的1/12
CKCON
当引脚上出现电平时启动T0 当不满足时,停止T0,读出以后清零 。
第2个回答  推荐于2017-10-01
首先 LZ 所谓的 计数值 含义不清楚,不知道是 初值,还是 溢出需要值,如果理解为 后者,那么 普通51单片机,可以认为 以上2个等号正确。
但 51单片机 还有一些可以使用 1T机械周期的,即是 1个机械周期 = 1个时钟周期(晶振周期),所以并不是 所有 机械周期 都 等于 12/晶振频率 的本回答被提问者和网友采纳
第3个回答  2013-04-04
学习单片机还是离不了教科书,这些问题,课本里说的贼清楚。
相似回答