新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)·延時(shí)程序小結(jié)

        單片機(jī)·延時(shí)程序小結(jié)

        作者: 時(shí)間:2012-08-24 來(lái)源:網(wǎng)絡(luò) 收藏

        實(shí)驗(yàn)中,有一個(gè)很重要也是很基本的子程序必須要求我們掌握,那就是。下面我憑記憶來(lái)講解

        課本上講,1個(gè)=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期,而這個(gè)時(shí)鐘周期與晶振頻率有關(guān)。我們接下來(lái)要上的實(shí)驗(yàn)基本都是以12MHz的晶振。12M的頻率,得其周期為1/12乘10的-6方s,那么1個(gè)就是它的12倍,即1us,而一般語(yǔ)句需要2個(gè),例如

        MOV R6,#20

        DNJZ R6,$

        每一次執(zhí)行時(shí),每一個(gè)過(guò)程就需要2個(gè)機(jī)器周期,為1us乘2。.同樣C語(yǔ)言中for循環(huán)語(yǔ)句沒(méi)執(zhí)行一次也是2個(gè)機(jī)器周期,即2us。下面我會(huì)以每個(gè)語(yǔ)句執(zhí)行一次用時(shí)的2us為基本單位,不會(huì)再細(xì)化了。

        匯編語(yǔ)言最基本延時(shí):

        MOV R6,#20

        D1:MOV R7,#248

        DNJZ R7,$//循環(huán)248次,共用248X2us,

        DNJZ R6,D1

        我開(kāi)始也是搞不懂怎么算它到底延時(shí)多少,現(xiàn)在給大家寫(xiě)它表達(dá)式:

        我覺(jué)得應(yīng)該從最后往前算,在MOR R7,#248執(zhí)行一次前提下,用時(shí)1X2us,然后循環(huán)減248,用時(shí)248X2us,故共用時(shí)[2+2X248]us。

        然而又由于DNJZ R6,D1,上面的過(guò)程又循環(huán)20次,故上面的循環(huán)最終用時(shí)20X[2+2X248]us。

        接著注意到單純DNJZ R6,D1會(huì)用時(shí)20X2=40us。

        最后注意過(guò)執(zhí)行唯一一次的MOV R6,#20會(huì)用時(shí)1X2us。

        所有,最終表達(dá)式為:1X2us+20X[2+2X248]us+20X2=10002us=10ms=0.01s。

        同理,用c51編的要了解它必須也要寫(xiě)出它的表達(dá)式,下面的C51延時(shí)程序可以試著自己寫(xiě)出表達(dá)式:

        void delay02s(void)
        {
        unsigned char i,j,k;
        for(i=20;i>0;i--)
        for(j=20;j>0;j--)
        for(k=248;k>0;k--);
        }

        我還是把表達(dá)式寫(xiě)在這,[(248X2+2)X20+2]X20=199240=199.24ms=0.2s

        再給一個(gè)我驗(yàn)證過(guò)的程序,這是個(gè)比較典型和基本的延時(shí)程序應(yīng)用例子:

        #includereg51.h>
        sbit L1=P0^0;
        void delay02s(void)
        {
        unsigned char i,j,k;
        for(i=20;i>0;i--)
        for(j=20;j>0;j--)
        for(k=248;k>0;k--);
        }
        void main(void)
        {
        while(1)
        {
        L1=0;
        delay02s();
        L1=1;
        delay02s();
        }
        }

        能看出它的功能么?他就是讓一個(gè)燈不停的閃啊閃,亮個(gè)0.2s,又熄個(gè)0.2s,如此反復(fù)。



        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 阳春市| 县级市| 平谷区| 蓝山县| 尉氏县| 石河子市| 平阴县| 贺兰县| 金塔县| 博乐市| 慈利县| 潢川县| 巩义市| 武平县| 丹寨县| 铜梁县| 嘉鱼县| 永福县| 乐安县| 南开区| 浦县| 青田县| 无极县| 乐业县| 图们市| 渝北区| 富锦市| 沙坪坝区| 江都市| 梧州市| 塘沽区| 嘉兴市| 曲水县| 盐山县| 横峰县| 栖霞市| 仁化县| 广汉市| 五指山市| 吐鲁番市| 永春县|