新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機C語言延時函數

        51單片機C語言延時函數

        作者: 時間:2013-01-30 來源:網絡 收藏

        四. 1s延時子程序

        程序:

        void delay1s(void)

        {

        unsigned char h,i,j,k;

        for(h=5;h>0;h--)

        for(i=4;i>0;i--)

        for(j=116;j>0;j--)

        for(k=214;k>0;k--);

        }

        關于單片機的精確延時,網上很多都是大約給出延時值沒有準確那值是多少,也就沒有達到精確高的要求,而本函數克服了以上缺點,能夠精確計數出要延時值且精確達到1us,本舉例所用CPU為STC12C5412系列12倍速的單片機,只要修改一下參數值其它系例單片機也通用,適用范圍寬。

        共有三條說明如下:

        函數調用分兩級:一級是小于10US的延時,二級是大于10US的延時

        //====================小于10US的【用1US級延時】====================

        //----------微秒級延時---------

        for(i=X;i>X;i--) 延時時間=(3+5*X)/12 提示(單位us, X不能大于255)

        //================大于10US小于21.9955Ms的可用【10US級】===========

        void Delay10us(uchar Ms)

        {

        uchar data i;

        for(;Ms>0;Ms--)

        for(i=26;i>0;i--);

        }

        i=[(延時值-1.75)*12/Ms-15]/4

        如想延時60US則 i=[(60-1.75)*12/6-15]/4=25.375≈26; 修改i的值=26,再調用上面的【10US級】Delay10us(6); 則就精確延時60US;

        如果想延時64US可以用這二種函數組合來用: Delay10us(6); for(i=9;i>X;i--) 共延時64US

        51單片機相關文章:51單片機教程


        c語言相關文章:c語言教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        晶振相關文章:晶振原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东明县| 芷江| 金川县| 夏津县| 辽阳县| 苏尼特左旗| 开化县| 秦安县| 北宁市| 长春市| 永泰县| 巨野县| 福鼎市| 高安市| 微山县| 阿拉善盟| 来宾市| 怀集县| 禹城市| 辽宁省| 望都县| 五指山市| 常宁市| 阜平县| 中山市| 通化市| 德昌县| 磐安县| 那坡县| 宁波市| 班戈县| 侯马市| 宜昌市| 卓尼县| 万荣县| 安吉县| 长兴县| 永安市| 诏安县| 绥棱县| 额济纳旗|