for循环占用的指令周期问题

来源:互联网 发布:保税货物需要上传数据 编辑:程序博客网 时间:2024/05/16 12:56

for循环占用指令周期的影响因素:

1.单片机的指令集合,指令所花费的时间周期

2.循环变量的数据类型,所占字节数越大,所占指令周期也就越大

3.循环体完成的工作

以avr单片机为例对于循环代码

for(i=0;i<4;i++); 

对应汇编指令如下:

for(i=0;i<1;i++)

0000           ;              i -> R16,R17

0000           ;   for(i=0;i<4;i++);

 00000027              clr R16

 00021127              clr R17

 0004           L2:

 0004                   .dbline 4

 0004          L3:

 0004                   .dbline 4

 00040F5F              subi R16,255  ; offset = 1

 00061F4F              sbci R17,255

 0008                   .dbline 4

 00080430              cpi R16,4

 000AE0E0              ldi R30,0

 000C1E07              cpc R17,R30

 000ED4F3              brlt L2

 

开始循环前变量i初始化占用两个指令周期,每次变量i的累加占用两个指令周期。跳转命令的判断占用三个指令周期,跳转命令占用两个指令周期。

所以每次循环占用七个指令周期。