微型计算机延时,在C中实现延时

以下是在大多数桌面系统上执行此操作的方法:

#ifdef _WIN32

#include

#else

#include

#endif

void wait( int seconds )

{ // Pretty crossplatform, both ALL POSIX compliant systems AND Windows

#ifdef _WIN32

Sleep( 1000 * seconds );

#else

sleep( seconds );

#endif

}

int

main( int argc, char **argv)

{

int running = 3;

while( running )

{ // do something

--running;

wait( 3 );

}

return 0; // OK

}

以下是如何在不带计时器的微型计算机/处理器上执行此操作:

int wait_loop0 = 10000;

int wait_loop1 = 6000;

// for microprocessor without timer, if it has a timer refer to vendor documentation and use it instead.

void

wait( int seconds )

{ // this function needs to be finetuned for the specific microprocessor

int i, j, k;

for(i = 0; i < seconds; i++)

{

for(j = 0; j < wait_loop0; j++)

{

for(k = 0; k < wait_loop1; k++)

{ // waste function, volatile makes sure it is not being optimized out by compiler

int volatile t = 120 * j * i + k;

t = t + 5;

}

}

}

}

int

main( int argc, char **argv)

{

int running = 3;

while( running )

{ // do something

--running;

wait( 3 );

}

return 0; // OK

}

waitloop变量必须进行微调,它们在我的电脑上工作得很近,但是频率尺度的东西使它对于现代桌面系统来说非常不精确;所以不要在那里使用,除非你接触到金属并且不做这些事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值