编码程序的一种变式。
CPU在执行语句的时候也是需要耗时的,只是CPU运行速度太快,我们没办法看清楚,所以如果CPU执行语句越多,所需要的时间就越多,根据这个原理,就可以通过让CPU随便执行语句,起到延时的效果,这被称为“软件延时”,CPU执行一条指令耗时近似1us,就可以通过这种办法加上循环就可以实现延时效果。
程序在不同主频下延时不一样,但这里面一定是个比例关系。打个比方,你的代码是在主频为1GHz下的延时,这个参数你延时是5S。但换到2GHZ下,程序不改动的话,延时是2.5秒。
在汇编代码中获取到当前的主频,那么就可以做成自适应的效果,自动按比例改变延时程序内部的计数量。
若是高级语言,比如VS,就能用GetTickCount()来精确延时5s了。其实只要能读出当前时间的精确值,比如直接读BIOS时间,那么就能实现比较精确的5s延时了。不同的CPU在读精确时间的函数上是一样的。
1. sleep()是以毫秒计算的,延时5秒是sleep(5*1000),延时5分是sleep(5*1000*60)
2.包含的头文件看你用的什么编辑软件。
3.我用的VC++是用包含在#include<windows.h>头文件中。
#include<stdio.h>#include<windows.h>//Sleep()的头文件 main() { int i
int n=10for(i=1i<=ni++) {printf("%d",i)Sleep(5*1000*60)} //
这里修改延时时间,
有些人说是用#include<dos.h>做头文件你自己试下吧。
还用Sleep的S是大写的,不是小写的。
单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期。
扩展资料:
1丶指令周期,是每种运算需要的时间,如加法、逻辑等,是每一步进行这种指令运算需要的时间,是机器周期的整数倍,这种周期不定。
2丶51单片机12M晶振,晶振周期1/12微妙,一个机器周期包含12个晶振周期,所以12M晶振时机器周期=12x(1/12)微妙=1微妙。
3丶1个毫秒延时子程序如下:
void delay1ms(uint ms)
{
uint i,j
for(i=0i<msi++)
{
for(j=0j<110j++)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)