这两个延时程序的区别是不是一个us一个ms

void_delay_us(uintx){uinti,j;for(j=0;j<x;j++)for(i=0;i<12;i++);}............delay_us(... void _delay_us(uint x)
{
uint i,j;
for (j=0;j<x;j++)
for (i=0;i<12;i++);
}
............delay_us(100)

void _delay_ms(uint x)
{
uint i,j;
for (j=0;j<x;j++)
for (i=0;i<120;i++);
}
...............delay_ms(100)
展开
 我来答
金色潜鸟
2013-02-05 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5686万
展开全部
x=100
delay_us(100)-- i循环100次 j循环12 次
delay_ms(100)-- i循环100次 j循环120 次, 多 100 * 10 次
x=100 时,两个程序耗时 为 1比100,像似 微秒 和 毫秒。
如果 x=1 两个程序耗时比 为10.
猜测 delay_us(100)是1微秒,delay_ms(100)是1毫秒。
实际上,计算机速度不同。这个程序的时间精度难说。

精确计时可用 QueryPerformanceCounter()函数返回当时时钟读数,计时开始用它得到开始读数,计时结束用它得到结束读数,两个数相减是时间差读数。读数转换为时间,要用QueryPerformanceFrequency()函数获得时钟频率,读数除以时钟频率,得时间,单位是秒。乘1000得毫秒。
还有一种方法是用Pentium芯片汇编指令 0x0F 和 0x31,读取时钟计数图章,类似QueryPerformanceCounter()函数,计时开始和结束分别调用一次,得读数差,并扣除执行一次调用函数消耗的额外时间。如果知道CPU速度可以算得时间,如果知道时间,可以估算CPU速度。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式