作业帮 > 综合 > 作业

延时程序void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=120;y>

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 11:36:16
延时程序
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
麻烦每句都解释下,
延时程序void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=120;y>
……就2句话……
这是一个延时函数……没啥好解释的啊
函数内部就是一个2层的for循环结构,调用该函数以后,cpu就开始在for循环里执行,for循环里只做循环体的判断,没有任何其他语句,目的就是消耗CPU时间以达到延时的目的.
void delay(uint z)
{
uint x,y;
//总共 z * 120 次循环
for(x=z;x>0;x--) //z次循环
for(y=120;y>0;y--); //120次循环
}
如果想具体计算上面的函数究竟延时多长时间,要先知道CPU的时钟频率是多少,还有搞清楚这段代码在编译器编译以后的汇编指令有多少条(每条指令的执行周期是多少),这些信息都知道了就可以算延时时间了.
真正要相对比较精确地延时的话,延时函数的代码一般是直接使用汇编语言来写的.