非常精确的C语言延时子程序表


用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有它不足之处:它的延时很不好控制,我们常常很难知道一段延时程序它的精确延时到底是多少,这和汇编延时程序没发比。但有时后写程序又不得不要用到比较精确的延时,虽然说可以用混合编程的方式解决,但这种方式不是每个人都能掌握,且写起来也麻烦。所以,通过测试我给大家提供一个延时子程序模块,并以此给一个出我们经常用到的延时的数据表格。(注意:表格中的数据只适合我的延时模块,对其他的延时程序不适用,切忌!!!!!!!!别到时候延时不对来骂我)
    延时模块:其中问号代表要填的数,要延时多少,到表格中去找数据,然后填上就OK!切忌3条FOR语句不能颠倒顺序
void Delay()
{
unsigned char a,b,c;
for(a=0;a<?;a++)
for(b=0;b<?;b++)
for(c=0;c<?;c++);
}                                                            数据表如下
/**********************************************************************************************************************/
延时时间          a的值          b的值          c的值          延时误差(us)
10us                        1                        1                         1                           -0.5         
20us                        1                        1                         8                            0  
30us                        1                        1                         15                        +0.5   
40us                        2                        1                         9                            0  
50us                        1                        1                         28                          0  
60us                        1                        1                         35                        +0.5   
70us                        1                        1                         42                        +1   
80us                        1                        1                         48                          0   
90us                        1                        1                         55                        +0.5  
100us                      1                        1                         61                         -0.5  
200us                      1                        1                         128                        0  
300us                      3                        1                         63                        +1.5  
400us                      2                        1                         129                        0  
500us                      5                        1                         63                         +0.5  
600us                      6                        1                         63                           0  
700us                      7                        1                         63                          -0.5  
800us                      1                        3                         175                        +0.5  
900us                      9                        1                         63                           -1.5  
1ms                         1                        3                         219                         -1.5
2ms                         2                        3                         220                         +3
3ms                         3                        3                         220                         +3
Xms                         X                        3                         220                         +3            
                   (X的范围为2到255)
        基本上我们平时用到的延时都在这里了,每种延时的误差都很小,最大也不过3us,有的甚至没有误差,已经很精确了,如果想延时1秒钟,你可以连续调用延时250ms的程序4次,总共延时误差12us,这样的误差已经不算误差了,用汇编语言编写还达不到这个程度。
       现在你不再为延时不精确担忧了,参照表中的数据写延时,想延时多少就能延时多少。
       再次重申:此表格是根据我的延时模块编写,这也是大多数朋友都习惯用的一个模块,如果你用其他模块或是改动了我的模块,延时都不准的,不信大家可以试试!!!!!!!!!!

我也来说两句 查看全部回复

最新回复

  • jourbon (2008-8-14 21:27:17)

    非常好的经验,支持楼主                   
  • qq64391381 (2008-8-14 22:34:34)

    好,有用的资料顶,呵呵!大家都来看以下啊!!!
  • bj301 (2008-8-18 00:56:12)

    顶一下、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  • sky_net (2008-8-18 05:14:44)

    太复杂了吧?...................
  • lzl520f4 (2008-8-18 08:49:15)

    顶一下、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  • kevin90925 (2008-8-18 14:57:07)

    好东西  
    绝对支持楼主
  • xcw0328 (2008-8-18 15:03:01)

    顶。。。。。。。。。。。。。。。。。。。。。。。。。
  • wudapang2008 (2008-8-18 16:23:30)

    非常感谢楼主!支持!!!
  • xmjianfu (2008-8-18 18:06:11)

    晶振用的是多少的,是12M吗?          
  • tanguoyong (2008-8-18 20:59:34)

    顶上去,支持楼主
  • ihotboyi (2008-8-18 23:32:30)

    谢谢,学习一下!!!!!!!!!!!!!!!!!!
  • fjj (2008-8-19 13:05:47)

    貌似好东西,哈哈 ........................
  • fz5098 (2008-8-19 19:43:45)

    太复杂了吧?...................
  • zgdzzz007007 (2008-8-19 22:36:33)

    ddddddddddddddddddddddddddddddddddddddddddd
  • jien886 (2008-8-19 23:32:09)

    已经记下!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • xiaxue1987 (2008-8-19 23:59:57)

    支持下!楼主辛苦了!!
    晶振用的是多少的?12m? 
  • yuxinmei (2008-8-21 11:35:35)

    测了这么多 好经验 学习了
  • liaoguobao00 (2008-8-28 10:32:48)

    晶振是24M的,如果用12M那么延时是表格中延时的2倍,误差也是2倍
  • wfbaaa (2008-8-28 13:09:21)

    好东东,下来看看!!!!!!!!!!!!!!!!!!!!!!!!
  • LUOSPRING (2008-8-28 16:24:07)

    hao dongxi !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!