1.时钟周期
单片机时钟频率的倒数 它可以表示为时钟晶振频率(1秒钟的时钟脉冲数)的倒数(也就是1s/时钟脉冲数,比如1/12MHz),
是CPU和其他单片机的基本时间单位。对CPU来说,在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,时钟周期就越短,工作速度也就越快。时钟周期在CPU的描述里也叫节拍,即将一个机器周期划分成若干个相等的时间段,每一段仅完成一个基本操作,用一个电平信号宽度对应。
2.机器周期
从内存中读取一个指令字的最短时间来规定CPU周期(机器周期),也即CPU完成一个基本操作所需的时间。机器周期主要针对汇编语言而言,在汇编语言下,程序的每一条语句执行的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而c语言语句占用时间是不可计算的。
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。
51单片机在其标准架构下,一个机器周期等于12个时钟周期。现在有不少增强型的51单片机,其速度都比较快。有的一个机器周期等于4个时钟周期,有的一个机器周期等于1个时钟周期。也就是说大体上可以达到51标准架构的3倍或12倍。
在8051系列单片机的一个机器周期由6个S周期(状态周期)组成。 一个S周期=2个节拍(P),也就是一个状态周期包含2个时钟周期,所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。又称CPU的工作周期或基本周期,总线周期。
3.指令周期
执行一条指令所需要的时间,是从取指令、分析指令到执行完指令所需的全部时间。
计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期,所以一个指令周期一般由若干个机器周期组成。指令不同,所需的机器周期也不同,比如一个复杂指令可能需要很多个机器周期才能完成,而每个机器周期又由多个时钟周期完成。
对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
4.各种单片机周期
在430中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8M,则一个时钟周期为1/8us;
一个机器周期 = 一个时钟周期,即430每个动作都能完成一个基本操作;
一个指令周期 = 1~6个机器周期,具体根据具体指令而定。
stm32和430相同
51 晶振11.0592 一条语句 大约1us
430 没有设置分频,在8MHZ晶振下 那么机器周期就是1/8M=125ns, 单指令的执行时间就是125ns
(一条C语言需要多久,这里就要看他的反汇编是多少条指令周期了,如果是N条,那么执行这一条C语言需要的时间就为 N*125ns)。推测:执行一条反汇编指令占一个指令周期
STM32在系统时钟没有倍频时,和430一样
stm32是3级流水线设计,所以周期时间是不一定的。官方数据手册应该有写速度。
通常,
{ int i,j;
for(i=0;i<x;i++)
for(j=1;j<1000;j++);
} X=多少是延迟1MS?怎么计算的
51执行一条指令的需要12个时钟周期,假如使用12MHZ晶振,执行一条指令的时间就是(1/12M*12)s,也就是1us,你要得到1Ms的延时,就让他反复执行一条指令1000次,也就是x取1就可以了。
(以上这种算法应该不对,指令周期是指机器指令)*****************************************************************
汇编和机器指令对应,C语言不直接对应指令,C语言可以编译成汇编,最后变成指令。
总的来说C能做的汇编都可以,但是C程序简单易维护,汇编的在时间、空间有限时效果好。
每一条的汇编指令对应相应的机器指令,所以有了指令集和指令编码这回事
机器语言是指能在一个处理器上执行的代码序列。
汇编语言,是机器语言的助记符,如MOV AX,BX, 一般一条汇编语言对应一条机器指令。
机器语言是指能在一个处理器上执行的代码序列。
程序:通常指程序员编写的程序源文件代码,需要编译器编译成汇编代码(也叫汇编程序),然后再汇编成机器代码。
不同的编译软件,对 for 语句的编译也不尽相同,以keil 为例,对 for(i=0;i<1;i++) n++;(i,n 均为 char 型或 unsigned char 型)进行编译,得:
①一条赋值语句(i=0) 2个机械周期,
②一条判断语句(i<1) 4个机械周期,
③一条自增语句(n++) 1个机械周期,
④又一条自增语句(i++) 1个机械周期,
⑤又一条判断语句(i<1) 4个机械周期,结束。
共计 12个机械周期。
——————————————————————————————————————————————————————————————
原文链接:https://blog.csdn.net/xuxia_yan/article/details/78852454