例如1ms的延时(如下)是怎么计算出来的?希望能具体说说。
void delay1ms(void) //12M晶振
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
这些时间是怎么得出来的?
追答51单片机执行一条指令一般是1---3微秒(12MHz),执行一条减一-判断-跳转指令,就是2微秒,这是c语言翻译为机器语言后的指令,cjne或djnz(汇编语言),编译器用什么指令和方法,需要你自己试验,我说的只是一种。
我只想要for延时的计算方法。。。不要延时方法。。。
追答首先根据晶振算出单片机一条指令需要多长时间,然后for多少个就行了
我只想要for延时的计算方法。。。不要测量方法。。。
嗯,我想知道计算的方法方,毕竟很多时候都是用for循环做的延时。
追答51单片机的机器周期是12个时钟周期,12M晶振就是一个时钟周期是1/12M秒,即机器周期是1/1M秒,那一个for循环延时时间就等于执行指令数乘以机器周期