❶ 单片机c语言编程关于延时函数
你是用的uvision吧?我用的uvision4,把程序编好运行,然后进行调试(在此要设置两个断点就是一个在Delay延时函数之前,一个断点设在延时之后),然后你会在左边register栏会看见一个 sec:0.00014182 这个就是软件运行到断点处所用时间,然后再运行一次(这次就是运行完延时函数所用时间)。你把两次的时间做差值就是延时函数延时时间。再附图两张。
❷ C语言delay的延时函数怎么写
回答这个问题前提需要搞清楚:
1.你的执行文件在那里运行?
2.你要延时是否“死等”,还是可以切换到其他任务?
-----------------------------------------------
如果你只是学习c语言,写个小函数玩玩,可以如下:
void delay(int time)
{
for(;time>0;time--)
{
nop;//可写任何无意义的操作
}
}
死等型的延时,时间根据指令执行速度不同而不同!!!!
❸ C语言编程中的延时
您好 这个延时函数很不稳定的,没有固定的时间
如果您使用tc 您可以用sleep(微秒)来延时
使用vc的话有5种常用方式:
方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为30ms,CPU占用低,且定时器消息在多任务操作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况。如示例工程中的Timer1。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式二:VC中使用sleep()函数实现延时,它的单位是ms,如延时2秒,用sleep(2000)。精度非常低,最小计时精度仅为30ms,用sleep函数的不利处在于延时期间不能处理其他的消息,如果时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer2。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式三:利用COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程来实现秒级延时。如示例工程中的Timer3和Timer3_1。以下是实现2秒的延时代码:
COleDateTime start_time = COleDateTime::GetCurrentTime();
COleDateTimeSpan end_time= COleDateTime::GetCurrentTime()-start_time;
while(end_time.GetTotalSeconds()< end_time =" COleDateTime::GetCurrentTime()-start_time;">
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式四:在精度要求较高的情况下,VC中可以利用GetTickCount()函数,该函数的返回值是 DWORD型,表示以ms为单位的计算机启动后经历的时间间隔。精度比WM_TIMER消息映射高,在较短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,如果定时时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer4和Timer4_1。下列代码可以实现50ms的精确定时:
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
dwEnd = GetTickCount()-dwStart;
}while(dwEnd <50);
为使GetTickCount()函数在延时或定时期间能处理其他的消息,可以把代码改为:
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = GetTickCount()-dwStart;
}while(dwEnd <50);
虽然这样可以降低CPU的占有率,并在延时或定时期间也能处理其他的消息,但降低了延时或定时精度。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式五:与 GetTickCount()函数类似的多媒体定时器函数DWORD timeGetTime(void),该函数定时精度为ms级,返回从Windows启动开始经过的毫秒数。微软公司在其多媒体Windows中提供了精确定时器的底层API持,利用多媒体定时器可以很精确地读出系统的当前时间,并且能在非常精确的时间间隔内完成一个事件、函数或过程的调用。不同之处在于调用DWORD timeGetTime(void) 函数之前必须将 Winmm.lib 和 Mmsystem.h 添加到工程中,否则在编译时提示DWORD timeGetTime(void)函数未定义。由于使用该函数是通过查询的方式进行定时控制的,所以,应该建立定时循环来进行定时事件的控制。如示例工程中的Timer5和Timer5_1。
❹ delay() c语言延迟函数
下面是delay
函数原型:
原型:
void
Delay(unsigned
int
nDelay)
{
unsigned
int
i,j,k;
for
(
i=0;i<nDelay;i++
)
for
(
j=0;j<6144;j++
)
k++;
}
用法:#include
<system.h>
功能:短暂延时
说明:延时msec*4毫秒所以,delay的延迟时间是和你的cpu时钟周期相关的
❺ 如何用C语言实现定时何延时功能
C语言中的两个函数
一个是<windows.h>库下的Sleep()
效果为当前进程等待Sleep(x)毫秒
可以实现延时功能
另一个是<time.h>下的time()
效果为返回当前时间,配合循环可以实现定时功能
以下是一个例子:
//刚写完
#include<stdio.h>
#include<windows.h>
#include<time.h>
intmain()
{
printf("定时程序2秒后开启 ");
Sleep(2000);
printf("定时程序开启 ");
printf("当前时间戳是%s ",time(NULL));
return0;
}
❻ c语言自己怎么写延时函数
学过汇编你就会知道,每条指令都占一定的时间(或者机器周期)的,如果你让机器什么都不做,即空指令的话,机器就会延时,然后你在计算好每次延时到底有多长,外面套一个循环(或者多重循环),根据你想要的延时时间即可计算出来循环的次数,延时函数基本上都是这种原理,它的参数就是用来控制循环次数的。
❼ C语言中 delay 函数如何运用
1、delay函数是一般自己定义的一个延时函数。
2、C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
//定义一个延时xms毫秒的延时函数
voiddelay(unsignedintxms)//xms代表需要延时的毫秒数
{
unsignedintx,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
❽ c语言有个可以使程序延时的语句是什么
Sleep函数:功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 注意: 在VC中使用带上头文件#include <windows.h>在VC中,Sleep中的第一个英文字符为大写的"S" ,在标准C中是sleep, 不要大写,简单的说VC用Sleep, 别的一律使用sleep 在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000); 在Linux下,sleep()里面的单位是秒,而不是毫秒。 示例: #include <windows.h> int main() { int a; a=1000; Sleep(a); return 0; } usleep函数:功能:usleep功能把进程挂起一段时间, 单位是微秒us(百万分之一秒)。 delay函数:功 能: 将程序的执行暂停一段时间,单位是毫秒ms(千分之一秒) 用 法: void delay(unsigned milliseconds); 示例: #include<dos.h> int main(void) { sound(440); delay(500); nosound(); return 0; }delay()是循环等待,该进程还在运行,占用处理器。sleep()不同,它会被挂起,把处理器让给其他的进程。
❾ 51单片机C语言中delay函数是怎么定义和使用的
delay函数是一般自己定义的一个延时函数。
c语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}