新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機C語言延時函數(shù)

        51單片機C語言延時函數(shù)

        作者: 時間:2013-01-30 來源:網(wǎng)絡(luò) 收藏

        C程序中可使用不同類型的變量來進行延時設(shè)計。經(jīng)實驗測試,使用unsigned char類型具有比unsigned int更優(yōu)化的代碼,在使用時應(yīng)該使用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--);

        }

        計算分析:

        程序共有三層循環(huán)

        一層循環(huán)n:R5*2 = 81*2 = 162us DJNZ 2us

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

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

        循環(huán)外: 5us 子程序調(diào)用 2us + 子程序返回 2us + R7賦值 1us = 5us

        延時總時間 = 三層循環(huán) + 循環(huán)外 = 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單片機相關(guān)文章:51單片機教程


        c語言相關(guān)文章:c語言教程


        單片機相關(guān)文章:單片機教程


        單片機相關(guān)文章:單片機視頻教程


        單片機相關(guān)文章:單片機工作原理


        晶振相關(guān)文章:晶振原理

        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 阿克苏市| 徐水县| 无极县| 侯马市| 延川县| 富裕县| 常宁市| 永胜县| 二连浩特市| 呼伦贝尔市| 伊宁市| 游戏| 河东区| 奉新县| 南安市| 开阳县| 威远县| 新龙县| 万年县| 克什克腾旗| 古丈县| 光泽县| 新沂市| 财经| 望谟县| 溧阳市| 新绛县| 万宁市| 佳木斯市| 左贡县| 讷河市| 罗城| 逊克县| 息烽县| 图木舒克市| 双流县| 通海县| 巨鹿县| 平陆县| 太仆寺旗| 新建县|