本帖最后由 eltonchang2001 于 2022-11-16 09:47 编辑
芯片基础属性时钟篇一时候不知应该从哪里开始写起。不过整体来说的话,这个系列的单片机时钟结构其实并不算复杂。 系统时钟
主要是四个时钟的概念:
外部时钟都是要外接晶振的,内部时钟则是通过RC震荡电路来提供脉冲。
上电的时候默认是都选用内部时钟的。 fsys是系统时钟的意思,可以由高速时钟fH(即HXT或者HIRC其中一个)提供,也可以由低速时钟(即LXT或者LIRC其中一个)提供。高速时钟还提供了多种分频,相对来说比较灵活。 时钟,指令周期,时钟周期合泰的8位单片机大部分都是4T架构的,可以通过数据手册提供的信息推导出来。
如果系统是16M的话,1个时钟周期则是1/16000000=0.0625us。
指令周期为0.25us的话也就是说明两者关系如下: 指令周期 = 时钟周期 * 4
同理可得,
8M的指令周期是0.5us,时钟周期是0.125us。
12M的指令周期是0.33us,时钟周期是0.08us,这个除不尽。 所有指令都可在 1~3 个指令周期内完成。
这个也是数据手册提到的,一条指令并不是指一句C语言代码,而是将这个C的代码转成的汇编指令,再看用了多少条汇编指令来完成。所以就算是看到的一个简单的C语言程序,转成汇编的话也是几条指令。
如图只是把PB4翻转一下,这里用了18条汇编指令,如果是按照8M的时钟,指令周期位0.5us,一个简单的操作用了9us。
但是如果用异或来完成这个操作,转换成的汇编指令就只有6条,耗时3us。
所以用这种主频较低的单片机就很锻炼程序功底的。很多东西随便都能写出来,但是如果要保证效率,同时兼顾ROM和RAM空间,就要考虑非常多东西,我的意思是,没什么必要不要折腾自己,外面很多资源丰富的单片机
|