VC里头有没有delay()延时的函数阿?
比如delay(1000)就是延世1秒?

解决方案 »

  1.   

    1.程序延迟用Sleep()
    2.工控领域如果你要求ms等级的精确延时,不要使用windows,要改用实时操作系统。
      

  2.   

    Sleep()的延时精度在WINNT只有50MS的精度
    2000下有10MS的精度
    采用循环延时会使你的CPU利用率很高,而且循环延时也是不精确的
    WINDOWS是抢占式多任务
    你需要的精度是多少?如果是毫秒级的可以采用多媒体定时器
      

  3.   

    但是目前只能使用windows,在实践中我发现,空循环耗时应该小于1微秒,但不知它到底是多少ns,所以很困惑。
    谁有这方面的经验?
      

  4.   

    是否可以查汇编指令,看它的时钟数计算出来?windows下不知道行不行?
      

  5.   

    在windows下,是抢占式的,因此你的问题没有答案
      

  6.   

    windows就不是一个实时操作系统,你的问题无法实现。
    提高了线程的优先级也不能保证系统不进行时间片的切换,并且有一个高优先级的线程在作循环,你的系统什么都别干了。
      

  7.   

    其实我要求的精度并不高,我并非需要几纳秒的时间,知道每次循环多长时间,就能计算出为了达到我要求的延时的时间,我可以写多少次循环。
    问题是这样的:给一个RC(电阻与电容)回路中的电容充电,R=200欧姆,C=0.47微法,那么充满电容所需时间为t=R*C=200*0.47微秒=94微秒。
    比如说,空循环一次耗时10ns,那么我大概使它空循环9400次便可冲满电容。
    所以,我需要知道空循环的大概耗时。
      

  8.   

    maosquirrel(松鼠) 如何控制8253来实现?我只会用8253实现定时采样。
    -------------------------------------------------------------
    Dai_Weis() 请问外加什么电路,外加计时器如何实现?
      

  9.   

    不能用空循环来当时钟用!!!!
    1。1次循环的时间在每台电脑上都不一样,你写出来的程序绝对不通用。
    2。在你的循环期间,很可能有其他任务抢占了cpu的使用,造成你的循环时间不精确,我感觉在windows下,小于50ms的响应都不一定能保证。
    3。你的循环期间,程序会没有响应,除非你另外开个工作线程。我觉得你是否可以用硬件实现你的功能。当充电完成后,发一个信号给电脑,让程序响应就可以了,而不要让计算机来控制时间。
      

  10.   

    在2000下,1MS的精度是可以保证的!
    但是在高的精度,除非象楼上几位说的,用硬件了。我也对此有需求
    希望高手指点硬件8253如何控制?
    BinLee(风之子) 你的循环实现肯定不行的,CPU利用率高倒是其次的,如果只跑你一个程序,高就高了。
    不同机器的速度不一致也是其次的,你可以首先给他循环上几百万次,计算花费了大概多少MS,你就可以知道延时1MS需要多少次循环。
    但是,你别忘了,WINDOWS是个抢占式多任务操作系统。你不能确保在你的循环过程中,他是否强制切换到别的线程了。你永远不能保证我这次循环100万次花了10MS,也许下次我就要花1000MS,甚至是1MS呵呵(不知道是不是有这么快)
      

  11.   

    对此问题有解的朋友,请给我来信好吗?
    [email protected]