久久久久久久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不卡在线 | 亚洲成人av一区二区 | 久久久久国产一区二区三区 | 国产精品欧美一区二区 | 在线观看第一页 | 欧洲视频一区二区 | 中文一级片 | 久久看精品 | 日韩精品视频在线 | 日韩av第一页 | 欧美日韩国产中文 | 欧美日韩中 | 最新日韩精品 | 人人玩人人添人人澡欧美 | 992tv人人草 久久精品超碰 | 欧美精品久久久久久久久老牛影院 | 91精品国产综合久久久久蜜臀 | 91精品国产欧美一区二区 | 最新高清无码专区 | 99热这里都是精品 | 午夜激情免费 | 国产在线精品一区二区三区 | 免费在线观看一区二区三区 | 嫩草伊人 | 国产激情片在线观看 | www.99热| 一区二区三区四区国产 | 国产精品乱码一区二三区小蝌蚪 | 精品久久久久久久久久久久 | 欧美视频第二页 | 国产亚洲精品久久午夜玫瑰园 | 国产一级视频在线播放 | 精品久久久久久久 | 99热都是精品 | 欧美成人影院 | 亚洲精品一区二区三区蜜桃久 | 国产欧美在线一区二区 | 天堂在线免费视频 | 午夜视频在线免费观看 | 日本成年免费网站 | 亚洲精品久久久久中文字幕欢迎你 |