新聞中心

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

        51單片機C語言延時函數

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

        C程序中可使用不同類型的變量來進行延時設計。經實驗測試,使用unsigned char類型具有比unsigned int更優化的代碼,在使用時應該使用unsigned char作為延時變量。 以某晶振為12MHz的單片機為例,晶振為12MHz即一個機器周期為1us。

        一. 500ms延時子程序

        程序:

        void delay500ms(void)

        {

        unsigned char i,j,k;

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

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

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

        }

        計算分析:

        程序共有三層循環

        一層循環n:R5*2 = 81*2 = 162us DJNZ 2us

        二層循環m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5賦值 1us = 3us

        三層循環: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6賦值 1us = 3us

        循環外: 5us 子程序調用 2us + 子程序返回 2us + R7賦值 1us = 5us

        延時總時間 = 三層循環 + 循環外 = 499995+5 = 500000us =500ms

        計算公式:延時時間=[(2*R5+3)*R6+3]*R7+5

        二. 200ms延時子程序

        程序:

        void delay200ms(void)

        {

        unsigned char i,j,k;

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

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

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

        }

        三. 10ms延時子程序

        程序:

        void delay10ms(void)

        {

        unsigned char i,j,k;

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

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

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

        }

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


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


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


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


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


        晶振相關文章:晶振原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 高邮市| 邵武市| 彰化市| 峨眉山市| 杨浦区| 汽车| 左云县| 德兴市| 陆丰市| 黄龙县| 荥阳市| 通江县| 陇南市| 那曲县| 麟游县| 西畴县| 扶绥县| 巫溪县| 汝城县| 蕲春县| 德化县| 车致| 镇安县| 四会市| 定州市| 沽源县| 海丰县| 苏尼特左旗| 江北区| 黑河市| 呼图壁县| 琼海市| 安达市| 靖西县| 潞城市| 密山市| 姜堰市| 新郑市| 资兴市| 武胜县| 射洪县|