#include <REG52H> // AT89S52标准头文件
#include<intrinsh> // 包含_nop_(); // 大约1us
sbit P20=P2^0;
void Delayus(unsigned int time)//延时时间为 1us x 晶振是110592M
{
unsigned int _y;
for(_y = 0; _y < time; _y++)
_nop_();
}
void main(void)
{
while(1)
{
P20=0; //点亮LED灯
Delayus(50000);
P20=1; //点灭LED灯
Delayus(50000);
}
}
给你个头,按照你给的延时改下就行了
这个是和你机器的运算速度有关的
你要计算出这个函数用了多少时间就要用时间函数,我很久没用了。
#include "stdlibh"
void delay()
{
time_t start,end;
start=time(null);
unchar i;
while(z--)
{
for(i=0;i<121;i++);
}
end=time(null);
printf("%f",difftime(end,start));
}
//time_t是在头文件中定义的,可能是个结构体类型里面的成员定义了一些时间的单位,如年、月、日。在这里调用这个结构体定义2个变量;
//start=time(null);
将其中一个变量赋值。它的值等于当前的系统时间
//end=time(null);
在程序结束的时候再给另一个变量赋值,值等于当前的系统时间。
//difftime(end,start)
函数difftime();是double类型,用来计算运行的时间,用第一个参数的时间减去第二个参数的时间,得到的值就是运行用了多少时间。单位为秒
如果是PC平台,用VC开发,实现一毫秒延时可以用以下程序:
#include <stdioh>#include <windowsh> //Sleep函数对应的库
int main()
{
int i;
for (i=0; i<11; i++)
{
printf("%d\n", i);
Sleep(1);// 1 单位是毫秒,实现等待一毫秒
}
return 0;
}
如果是嵌入式平台,单片机、dsp等
可以采用芯片的定时器实现精确延时,采用定时器中断,这是就需要根据晶振周期来精确设定定时器初值,然后延时到了就产生中断
可以用以下两种方式
1sleep(n);n是以毫秒为单位的;
2delay(n);n是以毫秒为单位的;
例如延迟一秒是sleep(1)或者是delay(1000);
以上就是关于流水灯c语言延时程序全部的内容,包括:流水灯c语言延时程序、在C语言程序中,延时函数的时间是怎么算的、怎样实现等待一毫秒(用c语言)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)