单片机中各种周期的关系

时钟周期:

时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般由外部的晶振产生,比如,12MHZ = 12*10^6,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期(时钟脉冲的倒数),也就是1/12微秒,通常也叫做系统时钟周期,是计算机中最基本,最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作,对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1微秒,若采用4MHZ的时钟频率,则周期为250毫秒,由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏,使计算机每一步都统一到它的步调上来,显然,对于同一种机型的计算机,时钟频率越高,计算机的工作速度就越快,但是,由于不同的计算机硬件电路和器件不完全相同,所以其所需的时钟频率范围也不一定相同。我们学的C51单片机的时钟频率范围是1.2MHZ~12MHZ。在8051单片机中把一个时钟周期定义为一个节拍(用P表示),两个节拍定义为一个状态周期(用S表示)。

机器周期:

在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每个阶段完成一项工作。例如:取所需指令、存储器读、存储器写等,这每一项工作称为一个基本操作,完成一个基本操作的时间,称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成,8051系列单片机的一个机器周期同6个S周期组成,一个机器周期 = 6个状态周期 = 12个时钟周期。在标准的51单片机中,一般情况下,一个机器周期等于12个时钟周期,如果是12MHZ,那么机器周期等于1us,单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行,单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间准则。机器周期不仅对指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准,例如一个单片机选择了12MHZ晶振,那么定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。

指令周期:

指令周期是执行一条指令所需的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同,对于一些简单的单字节指令,在取指令周期中,取指令出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需两个或者两个以上的机器周期。

定时时间初值的计算:

如需定时10MS

1.晶振为12MHZ

12MHZ / 12 = 1MHZ,1S = 1000000个机器周期, 10ms = 10000个机器周期。

65535 - 10000 = 55536(d8f0)所以 TH0 = 0xd8; TL0 = 0xf0;

2.晶振为11.0592MHZ

11.0592MHZ / 12 = 921600HZ,1S = 921600个机器周期, 10MS = 9216个机器周期。

65535 - 9216 = 56320(dc00)  所以 TH0 = 0xdc; TL0 = 0x00;

说明:以12M晶振为例,每秒可以执行1000000个机器周期,我们尽量应让溢出的中断次数最少,这样对主程序的干扰也就最小。开发的时候,可能会根据需要跟换不同频率的晶振,比如C51单片机,用11.0592M的晶振,很适合产生串口的时钟,而12M晶振很方便计算定时器的时间。

版权声明:本文为CSDN博主「一7吹晚风吧..」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_54929728/article/details/122743633

生成海报
点赞 0

一7吹晚风吧..

我还没有学会写个人说明!

暂无评论

相关推荐

趣聊51之串口通信(概念篇)

对于刚刚接触单片机的同学们来说,串口通信似乎是一个神秘感十足的东西,笔者在刚刚开始学习51单片机时,读的是郭天祥先生的那本著名的《新概念51单片机教程》,贼厚的一本书,但是等

STM32学习之新建工程模板

前言 好久没写STM32的博客了,主要还是涉及到很多核心技术,再加上代码量巨大,懒得整理,就不了了之了。 之前的开发的工程都是在已有框架上的已有产品中增加新功能,这次我决定