色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當前位置:首頁 > 嵌入式培訓 > 單片機學習 > 單片機教程 > 單片機延時方法 51單片機精確延時操作詳解

單片機延時方法 51單片機精確延時操作詳解 時間:2018-07-25      來源:未知

單片機延時方法 51單片機精確延時操作詳解

實現延時的方法有兩種:一種是硬件延時,另一種是計時器/計數器。該方法既能提高CPU的效率,又能實現準確的延時,另一方面是軟件延時。該方法主要采用循環體。今天主要介紹軟件延時,對硬件延時,然后對定時器部分進行詳細的說明。

單片機周期介紹:

在電子技術中,脈沖信號是一個按一定電壓幅度,一定時間間隔連續發出的脈沖信號。脈沖信號之間的時間間隔稱為周期;而將在單位時間(如1秒)內所產生的脈沖個數稱為頻率。頻率是描述周期性循環信號(包括脈沖信號)在單位時間內所出現的脈沖數量多少的計量名稱;頻率的標準計量單位是Hz(赫)。電腦中的系統時鐘就是一個典型的頻率相當精確和穩定的脈沖信號發生器。

指令周期:CPU執行一條指令所需要的時間稱為指令周期,它是以機器周期為單位的,指令不同,所需的機器周期也不同。對于一些簡單的的單字節指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執行,不再需要其它的機器周期。對于一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。

1、時鐘周期:也稱為振蕩周期,一個時鐘周期 = 晶振的倒數。對于單片機時鐘周期,時鐘周期是單片機的基本時間單位,兩個振蕩周期(時鐘周期)組成一個狀態周期。

2、機器周期:單片機的基本操作周期,在一個操作周期內,單片機完成一項基本操作,如取指令、存儲器讀/寫等。

3、機器周期=6個狀態周期=12個時鐘周期。

51單片機的指令有單字節、雙字節和三字節的,它們的指令周期不盡相同,一個單周期指令包含一個機器周期,即12個時鐘周期,所以一條單周期指令被執行所占時間為12*(1/ 晶振頻率)= x μs。常用單片機的晶振為11.0592MHz,12MHz,24MHz。其中11.0592MHz的晶振更容易產生各種標準的波特率,后兩種的一個機器周期分別為1 μs和2 μs,便于精確延時。

接下來列出這三種不同的晶振的延時函數

1、 11.0592MHz

//N ms延時

void delay_ms(uint n)

{

uint i,j;

for(i=n;i>0;i–)

for(y=114;y>0;y–);

}

2、12MHz晶振

//延時n毫秒

void delay_ms(unsigned int n)

{

unsigned int i=0,j=0;

for(i=0;i

for(j=0;j<123;j++);

}12345678

//延時n秒

void delay_m(unsigned int n)

{

unsigned int i=0,j=0;

for(i=0;i

for(j=0;j<21738;j++);

}12345678

//延時10*n微秒

void delay_10um(unsigned int n)

{

while(n--);

}12345

3、24MHz晶振

//延時n毫秒

void delay_ms(unsigned int n)

{

unsigned int i=0,j=0;

for(i=0;i

//延時n秒

void delay_s(unsigned int n)

{

unsigned int i=0,j=0;

for(i=0;i

for(j=0;j<54053;j++);

} 1234567

//延時10*n微秒

void delay_10us(unsigned int n)

{

unsigned int i=0;

char j=0;

for(i=0;i

for(j=0;j<2;j++);

} 12345678

建議大家封裝為頭文件,可以方便的調用。

接下來介紹幾個自動適應主時鐘的延時函數

//參數:ms,要延時的ms數,自動適應主時鐘

#define MAIN_Fosc 11059200UL //定義主時鐘HZ

typedef unsigned int INT16U;

void delay_ms(INT16U ms) //INT16U 等價于 unsigned int

{

INT16U i;

do{

i=MAIN_Fosc/9600;

while(--i); //96T per loop

}while(--ms); //--ms ms=ms-1

} 123456789101112

//5us 延時函數,自動適應主時鐘

#define MAIN_Fosc 11059200UL //定義主時鐘HZ

void delay5us()

{

#if MAIN_Fosc == 11059200

_nop_();

#elif MAIN_Fosc == 12000000

_nop_();

#elif MAIN_Fosc == 22118400

_nop_(); _nop_(); _nop_();

#elif

} 12345678910111213

單片機中還可自動生成

//11.0592MHZ延時100微秒

void Delay100us() //@11.0592MHz

{

unsigned char i, j;

_nop_();

_nop_();

i = 2;

j = 15;

do

{

while (--j);

} while (--i);

}

1234567891011121314

//100US

void Delay100us() //@12.000MHz

{

unsigned char i, j;

i = 2;

j = 39;

do

{

while (--j);

} while (--i);

}

123456789101112

//100US

void Delay100us() //@24.000MHz

{

unsigned char i, j;

i = 3;

j = 82;

do

{

while (--j);

} while (--i);

}

上一篇:單片機晶振的原理及作用詳解

下一篇:利用單片機制作報警器及報警系統常見問題分析

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網安備11010802025203號

回到頂部

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 中文字幕av一区中文字幕天堂| 亚洲欧美成人精品| 国产激情久久久| 国产精品久久av| 国产欧美日韩丝袜精品一区| 91久久精品国产91久久性色| 亚洲国产精品国自产拍av秋霞 | 中文字幕v亚洲ⅴv天堂| 色婷婷综合成人| 久久999免费视频| 97婷婷涩涩精品一区| 国产免费一区二区三区香蕉精| 亚洲一区二区三| 中文字幕精品在线| 久久久久久成人精品| 国产精品久久久久久久美男| 亚洲一区二区久久久久久| 国产一区二区三区久久精品| 欧美xxxx18性欧美| 日韩av123| 亚洲激情视频在线播放| 久久久999国产| 日韩av高清不卡| 日韩精品久久久久久福利| 日韩影视在线观看| 欧美亚洲视频在线看网址| 成人免费xxxxx在线观看| 色黄久久久久久| 2019中文字幕免费视频| 亚洲高清在线观看| 精品久久久视频| 成人乱人伦精品视频在线观看| 日韩在线一区二区三区免费视频| 国外色69视频在线观看| 亚洲激情在线观看| 欧美性猛交xxxx乱大交| 91在线免费观看网站| 久久久精品国产| 成人国产精品久久久久久亚洲| 久久久999精品视频| 国产精品日韩在线|