) 看如下代码,若是delay函数参数time为1000,它延迟的时间为( ) void delay(unsigned int time) { unsigned int i; unsigned char j; for(i = 0;i < time;i++) //0~1000 { for(j = 0;j < 240;j++) //0~240 {asm("NOP"); //3 asm("NOP"); asm("NOP");}
时间: 2024-04-02 20:31:38 浏览: 158
时间延迟编码函数
5星 · 资源好评率100%
根据代码可以看出,delay函数的实现是通过两层循环来进行延时的,内层循环执行了240次NOP指令,而外层循环执行了time次内层循环,因此总的延时时间可以计算出来:
总延时时间 = 内层循环执行次数 × 外层循环执行次数 × 单次循环耗时
单次循环耗时 = 3个NOP指令的时间 = 3个机器周期的时间
240个NOP指令的时间 = 240 × 3个机器周期的时间 = 720个机器周期的时间
所以,总的延时时间为:
总延时时间 = 720 × time 个机器周期的时间
假设CPU主频为f,一个机器周期的时间为1/f,那么总的延时时间就可以表示为:
总延时时间 = 720 × time × 1/f 秒
因此,当time为1000时,总的延时时间为720000/f秒,即延时约为720ms。
阅读全文