时钟周期
时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,比如12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,也就是1/12微秒。通常也叫做系统时钟周期。是计算机中最基本的、最小的时间单位。
在传统的8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。
机器周期
单片机在执行指令的过程中,其实需要完成很多个操作,比如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。传统8051系列单片机的一个机器周期由6个S周期(状态周期)组成。节拍和状态周期前面已经介绍过了。传统8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。
在传统的51单片机中,一般情况下,1个机器周期=12个时钟周期。在一个单片机最小系统中,如果外接的是12MHZ的晶振,那么机器周期=1微秒(前几天问小编为什么是1us的小伙伴到此处来领取答案)。
单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。
机器周期不仅对于指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHZ晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。
指令周期
指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。
系统时钟
系统时钟:系统时钟就是CPU指令运行的频率,这个才是CPU真正的频率。
一般来说,单片机只有一个时钟源.用了外部晶振,就不用内部RC,用了内部RC,就不用外部晶振。振荡器振荡,产生周期波.单片机在这样的周期波的作用一下有规律的一拍一拍的工作,波的频率越高,单片工作得就越快,波的频率越低,单片机工作得就越慢。
单片机内部所有工作,都是基于由晶振产生的同一个触发信号源,由这个信号来同步协调工作步骤,我们把这个信号称为系统时钟,系统时钟一般由晶振产生,但在单片机内部系统时钟不一定等于晶振频率,有可能小于晶振频率,也有可能大于晶振频率,具体要看单片机的实际设计及其原理。比如传统的51单片机,其实际的系统时钟就只有晶振频率的1/12,;比如大家觉得比较高级的STM32单片机,内部具有时钟倍频电路,可以通过程序设置系统时钟是实际晶振的多少倍,常见的STM32开发板上实际的晶振都是8Mhz的,可以通过倍频,实际的系统时钟都是运行在72Mhz。
系统时钟是整个单片机工作节奏的基准,它每振荡一次,单片机就被触发执行一次操作。
12T模式和1T模式
前面我们说的绝大部分都是传统51单片机的例子,现在传统51单片机已经可以收藏了,51单片机中小伙伴们最常见应该是手推车(STC)。STC51的单片机基本已经把51内核压榨到了极致,本节标题里说的额12T和1T也就是STC提出来的。STC把绝大部分的汇编指令所需要的的时钟周期压缩到了1个时钟周期,而传统的51单片机是最快的指令都需要12个时钟周期,所以STC官方就把他们的单片机叫做是1T的单片机。说到1T和12T,还有一个常用到的就是在用STC单片机的定时器时,和定时器相关的寄存器中专门有设置定时器是1T模式还是12T模式,如果是1T模式,而我们计算初值时又计算为了12T模式,那这样出来的定时器会比实际的速度快12倍,在使用时需要注意。
总结
说了那么多的周期,其这些周期和一个电子元件直接相关,那就是晶振。以上说的所有的时间单元,都和晶振频率相关。所以在编程时一定记得注意自己板子上的晶振频率是多少。
最后一点说明,因为生产制造的原因,实际的晶振频率和标称的数值会有一定的差距,因为任何物品在制作时都会产生误差。既然是误差,那就只要在允许的范围内就能正常使用,不会对系统产生大的影响。也正是因为这个误差,用单片机定时器制作的时钟,你会发现时钟走上几天后就会出现时间的偏差。这正是目前市面上的绝大部分电子时钟都会有走时不精准的根本原因,就算用了RTC时钟芯片,那时钟芯片的时间来源也是晶振产生,常见的RCT时钟晶振的频率是32.768Khz。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !