毫秒级别精确延时

利用计算机中的8253,8254可编程时间间隔定时器芯片实现的。在计算机内部有三个独立的16位计数器。计数器可以以二进制或二—十进制(BDC)计数。计数器每秒产生1193180次脉冲,每次脉冲使计数器的数字减一,产生频率是可变的,用QueryPerformanceFrequency可以得到,一般情况下都是 1193180。QueryPerformanceCounter可以得到当前的计数器值。所以只要你的计算机够快, 理论上精度可以达到1/1193180秒。



void QuerySleep(float MilliSecond)
{
_LARGE_INTEGER litmp;
__int64 QPart1,QPart2;
double dfMinus,dfTim,dfFreq;

QueryPerformanceFrequency(&litmp); // »ñµÃ¼ÆÊýÆ÷µÄʱÖÓƵÂÊ
dfFreq=(double)litmp.QuadPart;

QueryPerformanceCounter(&litmp);
QPart1=litmp.QuadPart;


do
{
QueryPerformanceCounter(&litmp); // »ñµÃÖÕÖ¹Öµ
QPart2=litmp.QuadPart;

dfMinus=(double)(QPart2-QPart1);
dfTim=dfMinus/dfFreq; // ʱ¼ä²î
}while(dfTim<(MilliSecond/1000));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值