#include<reg51.h>
void delay()
{unsigned char n;
for(n=0;n<100;n++)
;
}
void main(void)
{while(1)
{P0=0X00;
delay();
P0=0XFF;
delay();
}
}
01 CLR A;将A清0
02 C:0011 MOV R7,A;将A送给工作寄存器
03 INC R7 ; 将R7加一
04 CJNE R7,0x64;若R7不等于0x64(6*16+4=100)则转到C:0011处执行
CLR消耗1个机器周期
MOV消耗1个机器周期
INC消耗1个机器周期
CJNE消耗2个机器周期
根据循环条件 第03行和04行要执行100次 (0x64=100)所以上述程序消耗机器周期数N=1+1+(1+2)X100=302
所以 for 语句的一重循环
for(i=0;i<n;i++)
机器周期数: N=3XN+2 (n必须为无符号字符型)
二重循环 for(i=0;i<m;i++)
for(i=0;i<n;i++)
;
机器周期: N=3XmXn+5m+2