前言
单片机在执行语句时,需要特定的频率或者说“节奏”,提供节奏的单元一般有两种:外部晶振以及内部RC震荡。晶振很在开发板上很常见,一般都是8Mhz或者12Mhz的。RC震荡单元我们看不到,它们集成在单片机内部,一般的单片机有低速震荡和高速震荡,具体数值见对应的规格书。
几个频率的联系与区别
明确一下,一般来说,晶振震荡的频率即为时钟频率,不过目前的51单片机都可以设置分频,如下所示:
此图中提供单片机工作节奏的单元是内部高速的RC震荡器,其可设置多种分频,假定使用2分频,那么这里实际工作时的 时钟频率 = 震荡频率 / 2 = 16Mhz,也即系统时钟为16Mhz。
还有一个名词叫机器周期,在此之前,说明一个概念,叫“nT”的单片机,比如说,12T单片机,1T单片机。学生时代常用的51单片机都是12T单片机,即 机器频率 = 时钟频率 / 12,T数越小,机器频率越高,当T数是1时,机器频率 = 时钟频率。也就是说,1T的单片机是执行速度最快的单片机。
最后说指令周期,其实51单片机的指令可以分为单周期指令,双周期指令和四周期指令。这里面,单周期指令的执行时间为1个机器周期,双周期指令的执行时间为2个机器周期,四周期指令的执行时间为4个机器周期。拿nop进行说明,它是单周期指令,执行它需要1个机器周期。
总结
上面一会儿说周期,一会儿说频率,可能会把大家搞糊涂,这样写的目的是更容易从晶振频率出发来理解这些概念。为了方便大家进行统一的理解,下面以周期来列个表格进行说明。
周期类型 | 与其它周期类型的关系 |
---|---|
振荡周期 | 1/ (晶振频率) 或 1/(RC震荡频率) |
时钟周期 | 振荡周期* 分频比 |
机器周期 | 时钟周期* 单片机T数 |
单指令周期 | 机器周期 |
双指令周期 | 2* 机器周期 |
四指令周期 | 4* 机器周期 |
练习
一个2T的单片机,以内部32Mhz高速RC振荡器为时钟源,系统时钟为时钟源的2分频,那么请问,其执行一个nop语句消耗的时间是多少?(不考虑震荡器的误差,答案见评论区~)