a就是需要延迟的毫秒数(也可能是其他单位)。
就是说,执行 for(i=0i<600i++)的时间应该是一个单位长度(可能为1ms);
这样,你在调用的时候,赋值给a多少值,实际就是延时多少毫秒。
例如,延时10ms,就用
delay(10)
延时1ms,就用
delay(1)
#include<time.h>#include<stdio.h>
void main()
{
clock_t start,finish
double durtion=0
printf("计时开始\n")
start=clock()
while(1-durtion>0.00001)
{
finish=clock()
durtion=(double)(finish-start)
}
printf("1ms计时完毕\n")
}
原理:两个时间差值是1ms就立即跳出while循环,C语言中时间分度值是ms
用汇编语言写可以精确计算,但有时想拼出整数的ms或10ms也不容易,计算方法如下图说明:
而C语言靠经验和实验得来的,如下面程序
如果不准(与晶振频率有关),调K的值,,软件仿真查看,直到大致准确,想更精确用定时器
void delay(unsigned char i) //延时程序
{
unsigned char i,k
for(j=ij>0j--)
for(k=125k>0k--)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)