久久久久久久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,如此反復。

關閉窗口

相關文章

主站蜘蛛池模板: 91成人在线观看喷潮蘑菇 | 日韩中文视频 | 成人爽a毛片一区二区免费 www.欧美精品 | 日韩高清在线播放 | 久久这里都是精品 | 免费观看一区二区三区 | 国产精品成人一区二区三区 | 欧美精品一区在线观看 | 夜夜骑天天干 | 国内av在线 | 亚洲精品美女 | 精品欧美一区二区精品久久 | 天天久久综合 | 欧美精品在线观看视频 | 丨国产丨调教丨91丨 | 久久久精品一区二区 | 日韩精品三级 | 免费三级网站 | 免费av不卡 | 欧美亚洲 | 夜夜操夜夜| 黄色国产在线观看 | 男人天堂网址 | 午夜视频一区二区三区 | 中文字幕在线免费视频 | 成人午夜激情视频 | 黄色小视频免费在线观看 | 免费美女视频 | av播播 | 韩日av| 日韩亚洲视频 | 日韩专区在线观看 | 国产精品福利一区 | 黄色片免费 | 亚洲影视一区 | 国产黄色免费网站 | 国产精品免费在线播放 | 日韩精品影院 | 亚洲黄色av | 国产成人精品视频 | 蜜臀99久久精品久久久久小说 |