久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機·延時程序小結

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年04月10日   【字體:

在單片機實驗中,有一個很重要也是很基本的子程序必須要求我們掌握,那就是延時程序。下面我憑記憶來講解延時程序。

課本上講,1個機器周期=6個狀態周期=12個時鐘周期,而這個時鐘周期與晶振頻率有關。我們接下來要上的實驗基本都是以12MHz的晶振。12M的頻率,得其周期為1/12乘10的-6方s,那么1個機器周期就是它的12倍,即1us,而一般語句需要2個機器周期,例如

MOV R6,#20

DNJZ R6,$

每一次執行時,每一個過程就需要2個機器周期,為1us乘2。.同樣C語言中for循環語句沒執行一次也是2個機器周期,即2us。下面我會以每個語句執行一次用時的2us為基本單位,不會再細化了。

匯編語言最基本延時:

        MOV R6,#20

D1:MOV R7,#248

        DNJZ R7,$//循環248次,共用248X2us,

        DNJZ R6,D1

我開始也是搞不懂怎么算它到底延時多少,現在給大家寫它表達式:

我覺得應該從最后往前算,在MOR R7,#248執行一次前提下,用時1X2us,然后循環減248,用時248X2us,故共用時[2+2X248]us。

然而又由于DNJZ R6,D1,上面的過程又循環20次,故上面的循環最終用時20X[2+2X248]us。

接著注意到單純DNJZ R6,D1會用時20X2=40us。

最后注意過執行唯一一次的  MOV R6,#20會用時1X2us。

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

 

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

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--);
}

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

再給一個我驗證過的程序,這是個比較典型和基本的延時程序應用例子:

#include<reg51.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();
}
}

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

關閉窗口

相關文章

主站蜘蛛池模板: 国产不卡在线观看 | 99小视频| 久草视| 九九热在线视频观看这里只有精品 | 亚洲天堂中文字幕 | 在线观看视频91 | 国产99久久久久 | 亚洲色图综合 | 一区二区在线视频 | 精品欧美一区二区三区 | 国产精品九九视频 | 亚洲区一 | 国产免费一区二区 | www.日韩av.com| 91精品国产综合久久婷婷香蕉 | 亚洲精品成人在线 | 国产资源视频 | 欧美中文字幕在线观看 | 97国产成人 | 国产成人在线播放 | 免费看色| 国产成人在线视频播放 | 精品视频在线观看 | 黄色国产 | 久久久久国产精品一区二区 | 色综合九九 | 成人精品国产一区二区4080 | 国产精品久久久久久婷婷天堂 | 久久av网 | 一级黄色片免费 | 日韩精品| 天天插天天舔 | 欧美精品区 | 天堂一区二区三区四区 | 一区二区三区四区电影视频在线观看 | 黄视频网址 | 尤物视频在线免费观看 | 亚洲色图图片 | 99re6在线视频 | 国产一区二区自拍 | 国产精品成人一区二区三区 |